我很好奇为什么在数组上使用.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/
答案 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