这个问题已经困扰我一段时间了,我似乎无法在网上找到答案。
是否可以从某个索引开始使用 Array reduce 方法?
简单的例子
var studentGrades = ["John Doe", "Some School", 6, 7, 8, 7, 9, 9];
如果我只需要遍历 studentGrades 中的整数,我可以用一个简单的 for 循环来做到这一点
for(var i = 2; i < studentGrades.length; i++) {
// do stuff here ...
}
但是假设我需要得到一个平均成绩,它是所有整数的总和除以整数计数。如果 Array 只包含整数,那么使用 reduce 就没有问题。
var onlyIntegersArr = [5,2,3,4];
var averageGrade = onlyIntegersArr.reduce(function(a,b){
return a + b;
}) / onlyIntegersArr.length;
但是,如果我知道出于某种原因我需要跳过前两个 Array 元素并从索引 Array[2] 开始。
因此,例如,我会将 reduce 应用于 studentGrades ,但仅从索引 studentGrades[2] 开始。
reduce 有可能吗?
感谢您提供解决方案,我喜欢 切片 方法,但在这种情况下我不喜欢使用新方法。
例如
var average = studentGrades.reduce(function(a,b,i){
return i >= 2 ? a+b : 0;
}) / (studentGrades.length - 2);
原文由 JanisSt 发布,翻译遵循 CC BY-SA 4.0 许可协议
reduce 的第三个参数是一个索引,这里是 小提琴
如果数组在第二个索引之后有更多的非数字项,那么检查这个 小提琴