微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在第 4 行,为什么我不能说 i 而不是 numArr[i] 并且有另一种写法吗?

如何解决在第 4 行,为什么我不能说 i 而不是 numArr[i] 并且有另一种写法吗?

我只是不明白 i 如何不保存数字本身。我知道通常在某事之后的括号指的是索引。我在这里很困惑。

function sumArray(numArr){
    let total = 0;
    for (let i = 0; i < numArr.length; i++){
        total += numArr[i];
    }
    return total;
}

解决方法

请检查以下行。

function sumArray(numArr){
  let sum = 0;
  for(let v of numArr) {
    sum += v;
  }
  return sum;
}
console.log(sumArray([1,3,4]));

,

我只是不明白 i 如何不保存数字本身。一世 知道通常在某事之后的括号指的是索引。我是 弄糊涂了。

这是因为您使用的是 for 语句,而在 for 语句中,i 是一个计数器变量,并且始终具有索引而不是该索引处的数组值。如果您需要 i 中的值,请使用 forEach 如下或使用 docs

中提到的 for..in (other answer)

function sumArray(numArr){
    let total = 0;
    numArr.forEach (i=>{total += i});
    return total;
}

console.log(sumArray([1,2,3]));

,

总结数组的最佳工具是reduce。如果您的最终结果将是单个值,则 Reduce 是最好的工具,它可以是数组、对象,甚至是单个总和值(如本例中)。

无需关心存储总和的索引变量(reduce在内部做)

function sumArray(numArr) {
  return numArr.reduce((acc,curr) => acc + curr,0);
}

console.log( sumArray([1,4,5,6,7]) );

,

如果你只是想添加,那么你可以改用这个。

function sumArray(numArr) {
  let total = numArr.reduce((x,y) => x + y)
  console.log(total)
}
sumArray([1,6])

这是最简单的求和方法。基本上 reduce() 减少了传递给单个值的任何数组。它将从左到右为每个元素执行一个函数。至少这是我所知道的。如果此解决方案是您的答案,请在左侧打勾。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。