减少后返回索引和数组

时间:2015-07-31 14:28:28

标签: javascript arrays reduce

我正在使用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;

但是,只返回索引。我想找到一种方法来获得每个电话的价值。这种方法是否允许您接听每个电话?

3 个答案:

答案 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;
});

这会让你想要