我从for循环中获得的数组总和返回NaN(Javascript)[关闭]

问题描述 投票:-2回答:2

下面的那个函数返回NaN而不是预期的4。我敢打赌,这里有一个明显的错误,但我没有看到。

function myFunction(arr) {
    let arrSum = 0
    for (let i=0; i<=arr.length; i++) {arrSum += arr[i];}
    return arrSum;
}
const myArr = [2,2];
console.log(myFunction(myArr));
javascript arrays return nan
2个回答
3
投票

您需要进行迭代,直到只有i < arr.length arr [arr.length]会给出未定义,这将使您的arrSum NaN。

function myFunction(arr) {
    let arrSum = 0
    for (let i=0; i<arr.length; i++) {arrSum += arr[i];}
    return arrSum;
}
const myArr = [2,2];
console.log(myFunction(myArr));

0
投票

问题for循环的限制条件超出了数组大小。当前数组大小为2,自i<=arr.length开始,循环将迭代3次。因此,arr[2]将是undefined,并将导致NaN

解决方案:要访问数组中的元素,限制条件应为i < arr.length

尝试下面的代码。在此处输入代码

function myFunction(arr) {
    let arrSum = 0
    for (let i=0; i<arr.length; i++) {arrSum += arr[i];}
    return arrSum;
}
const myArr = [2, 2];
console.log(myFunction(myArr));
© www.soinside.com 2019 - 2024. All rights reserved.