返回缩减后的索引和数组

Return the index and array after reduced

本文关键字:索引 数组 返回      更新时间:2023-09-26

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

但是,这只返回索引。我正试图找到一种方法来获得每个呼叫的值。这种方法是否允许您获得每个呼叫?

您不需要使用reduce来做您正在做的事情。试着

function running_total(array) {
    var sum = 0;
    return array.map(function(elt) {
      return sum += elt;
    };
}

Reduce是关于将一个数组"浓缩"为一个"单一的东西"。相比之下,map是关于"转换"数组元素的。您的问题(据我所知)是转换数组的每个元素本身和所有前面的元素的总和。因此,从概念上讲,它是一个map,而不是reduce。

在返回语句中使用,将只返回由于逗号操作符规则的索引

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
  console.log(previousValue+"--"+currentValue)
  return previousValue + currentValue;
});

您可以创建另一个数组并为每个进度存储其值。

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);

然而,正如torazaburo所说,当你期望得到一个数组时,你应该使用.map,它返回array而不是.reduce