JavaScript .reduce,previousValue总是未定义的

时间:2014-02-05 22:33:24

标签: javascript

我很好奇为什么在数组上使用.reduce时,以下代码中始终未定义previousValue:

代码:

[2,2,2,3,4].reduce(function(previousValue, currentValue){
    console.log("Previous Value: " + previousValue);
    console.log("Current Value: " + currentValue);
},0)

输出:

Previous Value: 0 (index):
Current Value: 2 (index):
Previous Value: undefined (index):
Current Value: 2 (index):
Previous Value: undefined (index):
Current Value: 2 (index):
Previous Value: undefined (index):
Current Value: 3 (index):24
Previous Value: undefined (index):23
Current Value: 4 

这里可以找到一个小提琴:http://jsfiddle.net/LzpxE/

1 个答案:

答案 0 :(得分:38)

您需要返回一个值才能正确使用reduce。返回的值将在下一步中使用。

像:

[0,1,2,3,4].reduce(function(previousValue, currentValue) {
     return previousValue + currentValue;
});
// returns 10 in total, because
// 0 + 1 = 1 -> 1 + 2 = 3 -> 3 + 3 = 6 -> 6 + 4 = 10