gpt4 book ai didi

JavaScript:获取数组中的平均对象?

转载 作者:数据小太阳 更新时间:2023-10-29 05:17:24 25 4
gpt4 key购买 nike

我正在尝试想出一种方法来简化这段代码,使用最少的循环和变量,但我遇到了麻烦。

我想根据“值”获取数组“数字”中的平均对象。我觉得必须有一种数学方法可以在不在另一个循环中找到最接近的平均值的情况下获得平均值。

目前我有这个烂摊子:

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);

我需要检索该对象,因为它包含我需要使用的其他信息。

非常感谢任何帮助!

最佳答案

至少你需要两个循环来获取平均值和最接近的项目,因为你需要在第一次运行中访问所有项目并且你没有可能提前存储哪个项目具有最接近的值。

您可以先取平均值,然后减去与对象最接近的值。

var numbers = [{ value: 41 }, { value: 19 }, { value: 51 }, { value: 31 }, { value: 11 }, { value: 30 }],
average = numbers.reduce((sum, { value }) => sum + value, 0) / numbers.length,
closest = numbers.reduce((a, b) =>
Math.abs(average - a.value) <= Math.abs(average - b.value)
? a
: b
);

console.log(average);
console.log(closest);

关于JavaScript:获取数组中的平均对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com