gpt4 book ai didi

JavaScript 数组减少从索引开始

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:29 27 4
gpt4 key购买 nike

这个问题已经困扰我一段时间了,我似乎无法在网络上找到答案。

是否可以使用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;

但是如果我知道出于某种原因我需要跳过前两个数组元素并从索引数组 [2] 开始。

例如,我会将reduce应用于studentGrades,但仅从索引studentGrades[2]开始。

reduce 有可能吗?

感谢您提供解决方案,我喜欢切片方法,但在这种情况下我不喜欢使用新方法。

例如

var average = studentGrades.reduce(function(a,b,i){
return i >= 2 ? a+b : 0;
}) / (studentGrades.length - 2);

最佳答案

reduce的第三个参数是一个索引,这里是 fiddle

var averageGrade = onlyIntegersArr.reduce(function (a, b, c) {
if (c >= 2) {
return a + b;
} else {
return 0;
}
});

如果数组在第二个索引后有更多非数字项,则检查此 fiddle

var studentGrades = ["John Doe", "Some School", 6, 7, 8, 7, 9, 9, "Some School"];
var averageGrade = studentGrades.reduce(function (a, b, c) {
if (c >= 2 && !isNaN(b)) {
return a + b;
} else if (c >= 2) {
return a + 0;
} else {
return 0;
}
})
alert(averageGrade);

关于JavaScript 数组减少从索引开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com