2019-05-30
描述
对数组中的每一个元素(从左到右)使用累计函数,最终返回一个累计的连续数组。
提示
- 累计函数需至少传入当前累计数组和当前元素
- 对提供的数组使用
Array.prototype.reduce()
来执行累计函数 - 对累计函数计算的结果进行存储
- 最后一个参数为累计的初始值
代码
const reduceSuccessive = (arr, fn, acc) =>
arr.reduce((res, val, i, arr) => (res.push(fn(res.slice(-1)[0], val, i, arr)), res), [acc]);
示例
对数组中的每一个值进行连续累加:
reduceSuccessive([1, 2, 3, 4, 5, 6], (acc, val) => acc + val, 0); // [0, 1, 3, 6, 10, 15, 21]