将数组中多个对象的总和和平均值合并到一个数组中

我有一个包含多个对象的数组。我想得到它们的平均值和总和。


原始数组示例:


[[{count: 2}],[{count: 10}]]

最终阵列:


Sum array: [{count: 12}]

Average array: [{count: 6}]

我尝试使用减少...但是如果我在数组中有多个键,它不起作用,因为它只返回一个数字。


知道我会如何处理这个问题吗?


for(var i = 0; i < arr.length; i++){

    let average = arr[i].reduce((a, b) => a + b) / arr.length;

    console.log(average)

}


尚方宝剑之说
浏览 118回答 2
2回答

哔哔one

您的问题不清楚,但这里有一个使用 .它还跟踪遇到的每个键的总数,以防数组中并非所有对象都具有相同的键。您希望结果数组采用的格式尚不清楚,但我展示了一个根据调用结果计算平均值的示例。reduce()reduce()const arr = [&nbsp; {count1: 3, count2: 2},&nbsp;&nbsp; {count1: 4, count2: 10},&nbsp; {count1: 3, count3: 2}&nbsp; ];const sumObj = arr.reduce((a, o) => (&nbsp; Object.entries(o).forEach(([k, v]) => (&nbsp; &nbsp; a[k] = {...a[k] ?? {sum: 0, total: 0}}&nbsp; &nbsp; , a[k]['sum'] += v&nbsp; &nbsp; , a[k]['total'] += 1)&nbsp; &nbsp; ), a), {});console.log(sumObj);const averageArr = Object.entries(sumObj).map(([k, {sum, total}]) => ({key: k, average: sum/total}));console.log(averageArr);

芜湖不芜

您可以使用map和reduce,就像给定多个键一样:const exampleArray = [{swag: 3, count: 2}, {swag: 4, count: 10}];// converting into array with only the key you want to useconst countArray = exampleArray.map((element) => element.count); // an array with just {count: value} elements in them.// ... now reduce like normally
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript