【问题标题】:Array sum that I got from a for loop returns NaN (Javascript) [closed]我从 for 循环中获得的数组总和返回 NaN(Javascript)[关闭]
【发布时间】:2020-05-13 21:36:01
【问题描述】:

下面的函数返回 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));

【问题讨论】:

  • 数组具有从零开始的索引。你在循环中溢出了数组,你需要i &lt; arr.length
  • 有一些函数可以避免考虑数组的长度。例如[2,2].reduce((a,b)=> a+b, 0)

标签: javascript arrays return nan


【解决方案1】:

您需要迭代直到只有i &lt; arr.length arr[arr.length] 将给出 undefined ,这将使您的 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));

【讨论】:

    【解决方案2】:

    问题for 循环的限制条件超出数组大小。当前数组大小为 2,自 i&lt;=arr.length 以来循环将迭代 3 次。所以arr[2] 将是undefined,它将导致NaN

    解决方案:访问数组中的元素,限制条件为i &lt; 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));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 2018-05-09
      • 2021-02-28
      • 2020-07-14
      • 2014-02-12
      • 2015-11-24
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多