试图获得元素的平均值,JavaScript



我的任务是实现getSpeedStatistic函数,该函数接受testResults数组并返回统计数据作为包含3个数字的数组:

第一个是最小值。第二个是最高的值。最后一个是平均值,四舍五入。

我的函数:

function getSpeedStatistic(testResults) {
let min = testResults[0];
let max = testResults[0];
let sum = 0;
let average = 0;
for(const number of testResults){
if(number > max){
max = number;
};
if(number  < min){
min = number;
};
sum += number;
average += Math.round(sum / testResults.length);
};
return [min, max, average];
};

它适用于最低和最高值,但它不返回正确的平均值,我似乎也找不到结果的模式,它似乎给了我随机数,我不明白这个问题。

例如:

当输入为[5, 0, 8, 1]时,它应该返回[0, 8, 3]-但它返回[0,8,9];

当输入为[1, 2, 2, 3, 3, 3, 3, 18]时应该返回[1, 18, 4]-但它返回[1,18,11]

应该返回[1, 9.2, 5]当输入是[4.5, 6.7, 9.2, 1]-但它返回[1,9.2,14]

请帮忙!

你可以试试下面的代码:

function getSpeedStatistic(testResults) {
let lowest = testResults[0]
let highest = testResults[0]
let sum = 0
testResults.forEach (num => {
if (num < lowest){
lowest = num
}
else if (num > highest){
highest = num
} 
sum += num
})
return [lowest, highest, Math.floor(sum/testResults.length)]
};
console.log(getSpeedStatistic([5, 0, 8, 1])) // Example

forEach循环中,每次我们检查值是否小于lowest变量,如果是,我们等于新数字,这个过程与定义最高数字相同,但我们检查number是否大于highest变量。

每次我们在sum变量中对循环中的数字求和,当我们想要输出结果时,我们只需将其除以数组的长度(平均值),然后取整。

将平均值放在for循环的外边和后面

function getSpeedStatistic(testResults) {
let min = testResults[0];
let max = testResults[0];
let sum = 0;
let average = 0;
for(const number of testResults){
if(number > max){
max = number;
};
if(number  < min){
min = number;
};
sum += number;
};
average += Math.round(sum / testResults.length);
return [min, max, average];
};

最新更新