Javascript 我希望每个单独的reduce()函数返回值,而不是总数

Javascript 我希望每个单独的reduce()函数返回值,而不是总数,javascript,arrays,reduce,Javascript,Arrays,Reduce,我想要数组中的1,3,6,10,而不是返回总数10。因此,要返回每个调用,可以将返回值推入数组,如下所示。它与函数式编程背道而驰,因为它会作为副作用而变异结果。但它确实满足了你的需要 var数组=[0,1,2,3,4]; var结果=[]; array.reduce(函数(previousValue、currentValue){ var newValue=以前的值+当前值; 结果:推送(newValue); 返回新值; }); //结果是1,3,6,10 警报(结果)不要为此使用reduce。

我想要数组中的1,3,6,10,而不是返回总数10。因此,要返回每个调用

,可以将返回值推入数组,如下所示。它与函数式编程背道而驰,因为它会作为副作用而变异
结果。但它确实满足了你的需要

var数组=[0,1,2,3,4];
var结果=[];
array.reduce(函数(previousValue、currentValue){
var newValue=以前的值+当前值;
结果:推送(newValue);
返回新值;
});
//结果是1,3,6,10

警报(结果)不要为此使用reduce。切片数组,移动一个值以开始小计,然后使用map

      previousValue currentValue    index         array      return value
first call       0        1               1          [0, 1, 2, 3, 4]    1
second call      1        2               2          [0, 1, 2, 3, 4]    3
third call       3        3               3          [0, 1, 2, 3, 4]    6
fourth call      6        4               4          [0, 1, 2, 3, 4]    10
编辑-事实上,这可以与reduce配合使用,甚至比上面更简洁:

var arr = [0, 1, 2, 3, 4], output = arr.slice(), subtotal = output.shift()
output = output.map(function(elem) { return subtotal += elem })
// output is [1, 3, 6, 10]

然后调整
.reduce()
中使用的函数,将
(previousValue+currentValue)
之和添加到数组中。然后,也许您应该改用
.map()
(因为它将为您生成一个输出数组)只是有一个范围更大的变量来保持运行总数。我看了map函数,但它不是一次看一个元素吗?你可以通过(a,b)?Andreas这是什么例子?你试过什么了吗?有不同的方法来完成这项任务。一个是
.reduce()
,但这不是唯一的一个。一个简单的
for
循环也可以完成这项工作。
var arr = [0, 1, 2, 3, 4]
arr.reduce(function(a, b, ndx) { return a.length ? a.concat(a[ndx - 2] + b) : [a + b]})
// returns [1, 3, 6, 10]