# Create an array of partial sums in JavaScript

The **partial sum** of an array is the sum of all elements up to a certain index. While you may instinctively reach for `Array.prototype.map()`

to calculate partial sums, you'll find that you need to keep track of the previous sum. This is where `Array.prototype.reduce()`

comes in handy.

Using `Array.prototype.reduce()`

allows you to **keep track of the previous sum** while iterating over the array. By initializing the accumulator with an **empty array**, you can then use `Array.prototype.slice()`

to get the **previous partial sum** or `0`

if it's the first element.

Finally, using the spread operator (`...`

), you can add the new partial sum to the accumulator array containing the previous sums.

const accumulate = (...nums) => nums.reduce((acc, n) => [...acc, n + (acc.slice(-1)[0] || 0)], []); accumulate(1, 2, 3, 4); // [1, 3, 6, 10] accumulate(...[1, 2, 3, 4]); // [1, 3, 6, 10]