我正在使用mozilla提供的reduce方法。 Underscore提供了自己的版本,看起来非常相似。减少阵列非常简单。
ArrayName.reduce(function(a,b) {
return a +b;
});
我在排序数组时也使用了非常类似的方法。但是,我不明白的是如何返回一个电话列表。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce提供一个非常酷的表,显示他们的方法是如何工作的。我设置的数组几乎相同
var array = [1,2,3,100,55,88,2];
var sortArray= function(a,b) {
return a -b;
}
var sorted = array.sort(sortArray);
var reduced = sorted.reduce(function(previousValue,currentValue, index,array){
return previousValue + currentValue;
});
我想要设置的是每次调用。我想我可以简单地在最后用a引用返回值中的索引。
return previousValue + currentValue, index;
但是,只返回索引。我想找到一种方法来获得每个电话的价值。这种方法是否允许您接听每个电话?
答案 0 :(得分:2)
您不需要使用reduce
来处理您的工作。尝试
function running_total(array) {
var sum = 0;
return array.map(function(elt) {
return sum += elt;
};
}
减少约为"沸腾"一个数组到一个单一的东西"。相比之下,地图是关于"转换"数组的元素。你的问题(据我所知)是将数组的每个元素转换为自身和所有前面元素的总和。因此,从概念上讲,它是一张地图,而不是一张地图。
答案 1 :(得分:0)
您可以创建另一个数组并为每个进度存储其值。
dog

但是,正如torazaburo所说,正如您希望获得数组一样,您应该使用var array = [1,2,3,100,55,88,2];
var sortArray= function(a,b) {
return a -b;
}
var sorted = array.sort(sortArray);
var progress = [];
var reduced = sorted.reduce(function(previousValue,currentValue, index,array){
progress[index] = previousValue + currentValue;
return progress[index];
}, 0);
// ^^^^^
// give it a init value so it starts at first element.
console.log(progress);
,而.map
代替array
。
答案 2 :(得分:0)
由于逗号运算符规则
,在return语句中使用,
只会返回索引
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
console.log(previousValue+"--"+currentValue)
return previousValue + currentValue;
});
这会让你想要