javascript - 在 JavaScript 中无需硬编码即可找到数组的平均值
问题描述
我必须找到以下平均分:
scores = [85, 93, 65, 65, 92, 81, 93];
虽然有人教我如何解决这个问题,但有人告诉我不要硬编码,这对我来说有点问题,因为我是一个完整的初学者。提示是使用我已经尝试使用的 Math.random()。
let scores = [85, 93, 65, 65, 92, 81, 93];
let randDecimal = Math.random();
let randNum = randDecimal * scores.length;
let randIndex = Math.floor(randNum);
randScore = scores[randIndex];
let averageAddition = randScore * scores.length;
let averageLength = scores.length;
let averageScore = averageAddition / averageLength;
console.log("Average:", averageScore);
这会打印出不同的数字,这些数字不是scores
我尝试对其进行硬编码并得到 82 的平均值,但现在我似乎无法再次获得 82。
解决方案
Math.random()
返回一个介于 0 和 1 之间的随机数。在尝试计算数组的平均值时,它对你没有任何好处。
您之前的尝试不起作用,因为它不是计算数组的平均值,而是从数组中获取一个随机项。
let scores = [85, 93, 65, 65, 92, 81, 93];
let randDecimal = Math.random(); //random number from 0-1
let randNum = randDecimal * scores.length;
let randIndex = Math.floor(randNum); //random index
randScore = scores[randIndex]; //get item at random index
let averageAddition = randScore * scores.length;
let averageLength = scores.length;
let averageScore = averageAddition / averageLength; //cancels out previous operation at line 6
console.log("Average:", averageScore);
要计算平均值,您可以遍历数组并对变量中的值求和,然后将总和除以长度以找到平均值。
let scores = [85, 93, 65, 65, 92, 81, 93];
var sum = 0;
scores.forEach(e => sum += e);
const avg = sum / scores.length;
console.log(avg);
您可以使用以下方法使其更短Array.reduce()
:
let scores = [85, 93, 65, 65, 92, 81, 93];
const avg = scores.reduce((a, b) => a + b, 0) / scores.length;
console.log(avg);
推荐阅读
- javascript - 如何在浏览器中使用 module.exports?(不是节点 js)
- c++ - 如果 libpocofoundation 与我的小应用程序链接,readdir 会挂断
- c# - 图像保存损坏的异步方式
- solr - 如何在 Solr 中使用不同的格式化程序突出显示多个单词?
- html - Exce VBA - 从 fetching-builds 网站获取链接
- php - pdf到php中的字节数组转换
- c++11 - ld:未找到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1
- angular - 通过代理配置从 Electron-Angular 项目调用 API
- python - 为什么 reshape 对 Transpose 的工作方式不同并返回一个新的 nd 数组?
- android - Android的FFmpeg GL转换命令