使用JS查找数组的平均值

新手上路,请多包涵

我一直在寻找并没有找到一个关于堆栈溢出的简单问题和答案,以寻找数组的平均值。

这是我拥有的数组

const grades = [80, 77, 88, 95, 68];

我首先认为这个问题的答案是这样的:

let avg = (grades / grades.length) * grades.length
console.log(avg)

然而,这给了我一个 NaN 的输出。

所以我尝试了这个:

for (let grade of grades)
    avg = (grade / grades.length) * grades.length
console.log(avg)

这给了我 68 的输出。(我不知道为什么)。

因此,我有两个问题。 1.为什么我的输出是68?和 2. 有人可以帮助我实际找到数组的平均值吗?

原文由 kdweber89 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以通过将所有元素相加然后除以元素数来计算平均值。

 var total = 0;
 for(var i = 0; i < grades.length; i++) {
 total += grades[i];
 }
 var avg = total / grades.length;

你得到 68 作为结果的原因是因为在你的循环中,你不断地覆盖你的平均值,所以最终值将是你最后一次计算的结果。并且您的除法和乘法除以 Grades.length 相互抵消。

原文由 bwroga 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 ES6,您可以将 Andy 的解决方案变成单行代码:

 const average = array => array.reduce((a, b) => a + b) / array.length;
console.log(average([1,2,3,4,5]));

原文由 Austin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题