Files
30-seconds-of-code/snippets/js/s/accumulate.md
2023-05-07 16:07:29 +03:00

26 lines
739 B
Markdown

---
title: Partial sum array
type: snippet
language: javascript
tags: [math]
author: chalarangelo
cover: river-house-lights
dateModified: 2022-01-30T13:10:13+02:00
---
Creates an array of partial sums.
- Use `Array.prototype.reduce()`, initialized with an empty array accumulator to iterate over `nums`.
- Use `Array.prototype.slice()` to get the previous partial sum or `0` and add the current element to it.
- Use the spread operator (`...`) to add the new partial sum to the accumulator array containing the previous sums.
```js
const accumulate = (...nums) =>
nums.reduce((acc, n) => [...acc, n + (acc.slice(-1)[0] || 0)], []);
```
```js
accumulate(1, 2, 3, 4); // [1, 3, 6, 10]
accumulate(...[1, 2, 3, 4]); // [1, 3, 6, 10]
```