如何阻止第二个console.log在其计算中包含第一个console.log的数组?

问题描述 投票:0回答:1

我创建了一个函数,可以找到您放入的任何数组的总和。问题是,如果我有其中两个console.log,第二个会将第一个数组的总和添加到其结果中。我做错了什么?

let sum = 0;

function getAverage(scores) {
  for (let i = 0; i < scores.length; i++ ) {
  sum += scores[i]; 
}
  return sum
}

console.log(getAverage([92, 88, 12, 77, 57, 100, 67, 38, 97, 89]));
console.log(getAverage([45, 87, 98, 100, 86, 94, 67, 88, 94, 95]));

第一个是717,第二个应该是854,但它添加了第一个的结果得到1571。

javascript arrays sum
1个回答
0
投票

这是因为您定义的

sum
变量位于函数
getAverage
之外,并且在调用函数时不会重置。

您可以在函数内部声明变量,以便每次调用函数时都会创建一个新变量。

您也可以使用

reduce

function getAverage(scores) {
  return Array.isArray(scores) && scores.reduce((acc, curr) => acc + curr, 0)
}

console.log(getAverage([92, 88, 12, 77, 57, 100, 67, 38, 97, 89]));
console.log(getAverage([45, 87, 98, 100, 86, 94, 67, 88, 94, 95]));

© www.soinside.com 2019 - 2024. All rights reserved.