gpt4 book ai didi

javascript - 迭代数组对象并计算平均值

转载 作者:行者123 更新时间:2023-11-29 10:37:32 24 4
gpt4 key购买 nike

我有以下数据结构,需要为竞争者对象中的项目获取每一列的平均值。然后我需要把它变成一个数组数组。第一个值需要是列平均值(四舍五入),第二个值需要是从 0 开始的增量值。例如

output = [[6, 0], [4, 1], [3, 2], [3, 3], [6, 4]]; 

示例结构:

input = {
categories: [
"Cat 1",
"Cat 2",
"Cat 3",
"Cat 4",
"Cat 5"
],
contenders: {
item1: [5, 3, 4, 4, 6],
item2: [6, 10, 4, 4, 6],
item3: [6, 3, 4, 9, 6],
item4: [8, 3, 5, 4, 6],
item5: [9, 3, 4, 4, 6],
item6: [10, 2, 7, 4, 6],
item7: [4, 3, 4, 4, 6],
item8: [1, 5, 4, 4, 6]
},
misc: [0, 3, 4, 4, 6]
};

我创建了一个可以为我计算平均值的函数:

function getAvg(data) {
return data.reduce(function (p, c) {
return p + c;
}) / data.length;
}

但不太清楚如何迭代项目的值以获得我的结果。

最佳答案

如果我理解正确并且您想要每一列的平均值,这意味着您的项目键中所有数组中的每个第一个元素作为示例,那么您需要为每一列创建一个数组以使用您的平均函数。然而,这样做你已经可以计算平均值了,这里有一个方法:

      var input = { categories: ["Cat 1", "Cat 2", "Cat 3", "Cat 4", "Cat 5"], contenders: { item1: [5, 3, 4, 4, 6], item2: [6, 10, 4, 4, 6], item3: [6, 3, 4, 9, 6], item4: [8, 3, 5, 4, 6], item5: [9, 3, 4, 4, 6], item6: [10, 2, 7, 4, 6], item7: [4, 3, 4, 4, 6], item8: [1, 5, 4, 4, 6] }, misc: [0, 3, 4, 4, 6] }


var output = []

var cols = input.contenders.item1.length // amount of columns (I assume all items have same amount of columns)

for(var i=0;i<cols;i++){
output[i] = [0,i] // start output with sum of 0 and index i
}

for(var key in input.contenders){
var arr = input.contenders[key]
for(var k = 0;k<cols;k++){
output[k][0]+=arr[k] // add the value of the array in the kth position to the kth output sum
}
}

for(var i=0;i<cols;i++){
output[i][0] = Math.round(output[i][0]/Object.keys(input.contenders).length) // now just divide by the amount of keys
}

console.log(output)

关于javascript - 迭代数组对象并计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336067/

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