【发布时间】:2018-05-11 08:38:21
【问题描述】:
我正在想办法让这段代码变得简单,使用最少的循环和变量,但我遇到了麻烦。
我想根据“值”获取数组“数字”中的平均对象。我觉得必须有一种数学方法来获得平均值,而无需在另一个循环中找到最接近的平均值。
目前我有这个烂摊子:
var numbers = [
{ value: 41 },
{ value: 19 },
{ value: 51 },
{ value: 31 },
{ value: 11 }
];
// Find average:
var sum = 0;
for (var i = 0; i < numbers.length; i++) {
sum += numbers[i].value;
}
var average = sum / numbers.length;
// Find closest object to average:
var match, difference;
for (var j = 0; j < numbers.length; j++) {
const diff = Math.abs(average - numbers[j].value);
if (difference === undefined || diff < difference) {
difference = diff;
match = numbers[j];
}
}
// Print junk:
console.log("AVERAGE NUMBER: " + average);
console.log("CLOSEST OBJECT: " + match);
console.log("CLOSEST NUMBER: " + match.value);
我需要检索该对象,因为它包含我需要使用的其他信息。
任何帮助将不胜感激!
【问题讨论】:
-
我投票结束这个问题,因为“不那么可怕”是非常主观的。关于工作代码的问题通常更适合codereview.stackexchange.com
-
@Quentin 对不起,我会尝试重写
-
我很难说出这个问题,所以写了上面的代码来帮助解释这个问题,但它似乎是解决方案
标签: javascript arrays average