Return 缩减后的索引和数组
Return the index and array after reduced
我正在玩mozilla提供的reduce方法。 Underscore 提供了自己的版本,看起来非常相似。减少数组非常简单。
ArrayName.reduce(function(a,b) {
return a +b;
});
我在对数组进行排序时也使用了非常相似的方法。但是,我不明白的是如何 return 调用列表。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce 提供了一个非常酷的 table 来展示他们的方法是如何工作的。我设置我的阵列几乎相同
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;
});
虽然我想设置的是每次调用。我想我可以简单地引用 return 值中的索引,最后加上 ,。
return previousValue + currentValue, index;
但是,那只是 return 的索引。我正在尝试寻找一种方法来获取每次通话的价值。这种方法是否能让您接到每个电话?
您不需要为您正在做的事情使用 reduce
。尝试
function running_total(array) {
var sum = 0;
return array.map(function(elt) {
return sum += elt;
};
}
Reduce 是关于 "boiling down" 一个数组到 "single thing"。相比之下,map 是关于数组的 "transforming" 个元素。您的问题(据我了解)是 transform 数组的每个元素为其自身和所有前面元素的总和。因此,从概念上讲,它是一个 map,而不是 reduce。
您可以创建另一个数组并存储每个进度的值。
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
which returns an array
而不是.reduce
.
在 return 语句中使用 ,
由于逗号运算符规则
只会 return 索引
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
console.log(previousValue+"--"+currentValue)
return previousValue + currentValue;
});
这会如你所愿
我正在玩mozilla提供的reduce方法。 Underscore 提供了自己的版本,看起来非常相似。减少数组非常简单。
ArrayName.reduce(function(a,b) {
return a +b;
});
我在对数组进行排序时也使用了非常相似的方法。但是,我不明白的是如何 return 调用列表。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce 提供了一个非常酷的 table 来展示他们的方法是如何工作的。我设置我的阵列几乎相同
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;
});
虽然我想设置的是每次调用。我想我可以简单地引用 return 值中的索引,最后加上 ,。
return previousValue + currentValue, index;
但是,那只是 return 的索引。我正在尝试寻找一种方法来获取每次通话的价值。这种方法是否能让您接到每个电话?
您不需要为您正在做的事情使用 reduce
。尝试
function running_total(array) {
var sum = 0;
return array.map(function(elt) {
return sum += elt;
};
}
Reduce 是关于 "boiling down" 一个数组到 "single thing"。相比之下,map 是关于数组的 "transforming" 个元素。您的问题(据我了解)是 transform 数组的每个元素为其自身和所有前面元素的总和。因此,从概念上讲,它是一个 map,而不是 reduce。
您可以创建另一个数组并存储每个进度的值。
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
which returns an array
而不是.reduce
.
在 return 语句中使用 ,
由于逗号运算符规则
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
console.log(previousValue+"--"+currentValue)
return previousValue + currentValue;
});
这会如你所愿