首页 > 解决方案 > 我正在尝试在 Javascript 中添加数字数组的结果,但它显示的是 Nan 结果

问题描述

// 我想添加一个数字数组元素,但结果显示 Nan 为什么这样

let numarr = [5598, 4589 ,25465164]
    let len = numarr.length;
    let i,  numval = 0;
    for(i=0; i <= len; i++) {
      numval +=  numarr[i];
    } 
    document.getElementById("demo").innerHTML = numval;

标签: javascript

解决方案


这是因为<=for-loop. 如果您使用<=then 循环将运行超过数组的长度,它将尝试访问不存在的元素。

如果您尝试访问不存在的元素,那么它将返回undefined。添加一个数字undefined会给你NaN

要么使用numarr.length - 1要么i < len

let numarr = [5598, 4589, 25465164]
let len = numarr.length;
let i, numval = 0;
for (i = 0; i < len; i++) {
  numval += numarr[i];
}
document.getElementById("demo").innerHTML = numval;
<h1 id="demo"></h1>

替代解决方案:您也可以在此处使用 reduce 来达到相同的结果

let numarr = [5598, 4589, 25465164]

const numval = numarr.reduce((a, c) => a + c);

document.getElementById("demo").innerHTML = numval;
<h1 id="demo"></h1>


推荐阅读