我无法完全理解 Array.reduce
.
我有这个数组:
const fooArray = [1, 2, 3, 4, 5];
我正在尝试做的是将各个增量总和插入一个新数组,例如:
[1, 3, 6, 10, 15]
这是我的归约函数:
const barArray = [];
fooArray.reduce((previousValue, currentValue, currentIndex) => {
barArray.push(previousValue)
return previousValue + currentValue;
});
部分有效,barArray
变为
[1, 3, 6, 10]
除了你会注意到 fooArray
的长度是 5 而 barArray
是 4 之外,它缺少最后的总和,它应该是 15。我知道 previousValue + currentValue
会将所有内容相加,但我无法连接如何在添加所有增量总和后将其插入数组的末尾。
感谢任何帮助。
JSfiddle:http://jsfiddle.net/4u2fopyg/2/
最佳答案
您可以计算累计和,并在将其推送到 barArray
后在每一步返回它,同时确保传递 0
作为 initialValue
到 .reduce()
:
const fooArray = [1, 2, 3, 4, 5];
const barArray = [];
const total = fooArray.reduce((previousValue, currentValue) => {
const sum = previousValue + currentValue;
barArray.push(sum);
return sum;
}, 0);
console.log('barArray:', barArray.join(), 'total:', total);
或者,您可以将连音符作为累加器传递,这可能是某些人的首选样式:
const fooArray = [1, 2, 3, 4, 5];
const [barArray, total] = fooArray.reduce(([barArray, previousValue], currentValue) => {
const sum = previousValue + currentValue;
barArray.push(sum);
return [barArray, sum];
}, [[], 0]);
console.log('barArray:', barArray.join(), 'total:', total);
关于Javascript reduce push individual sums + final sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939905/