# Convert JavaScript Array [a, b, c, d, e] into [a+b, b+c, c+d, d+e] dynamically

I have an array `[a, b, c, d, e, .....]` .

How can convert this like `[a+b, b+c, c+d, d+e, ....]`

The reducer may be the best way to do this but how to store temp memory after calculation. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

```function randomIntegerArray(length) {
const random = Math.floor(
Math.pow(10, length - 1) +
Math.random() * (Math.pow(10, length) - Math.pow(10, length - 1) - 1),
);
return String(random).split('');
}
const makeQuestions = (del, len) =>
new Array(len)
.fill(randomIntegerArray(del))
.map((row, index) => {

// row [a, b, c, d, e]
// ans [a+b, b+c, c+d, d+e]
let ans = [];

return {
question: row,
};
} );

console.log(makeQuestions(5, 2));```

There are some issues in your code:

• The `randomIntegerArray` function can only deal with lengths up to about 17, … for greater values, it will keep producing zeroes beyond index 17. This is because of the precision limit that floating point has.

• The `randomIntegerArray` function does not do what its name says: it produces an array of strings, not of integers

• The `randomIntegerArray` function never produces a zero at index 0.

• The `randomIntegerArray` function cannot produce numbers greater than 9.

• Your code only generates one such random array, and then assigns that single array to several slots in your question array using `fill`. Although not clear from your question, it seems more likely you want to generate as many random arrays as you have “questions”.

Here is how you could do the job, also addressing the above mentioned issues:

```const randomIntegerArray = (length, max=9) =>
Array.from({length}, () => Math.floor(Math.random() * (max+1)));

const makeQuestions = (del, length) =>
Array.from({length}, () => randomIntegerArray(del))
.map((question, index) => ({
question,
anser: question.slice(0, -1)
.map((item, index) => item + question[index+1])
}));

console.log(makeQuestions(5, 2));```