为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2023-09-14 17:56:16
我有一个包含多个对象的数组。我想得到它们的平均值和总和。原始数组示例:[[{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)}
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

您的问题不清楚,但这里有一个使用 .它还跟踪遇到的每个键的总数,以防数组中并非所有对象都具有相同的键。您希望结果数组采用的格式尚不清楚,但我展示了一个根据调用结果计算平均值的示例。reduce()reduce()


const arr = [

  {count1: 3, count2: 2}, 

  {count1: 4, count2: 10},

  {count1: 3, count3: 2}

  ];


const sumObj = arr.reduce((a, o) => (

  Object.entries(o).forEach(([k, v]) => (

    a[k] = {...a[k] ?? {sum: 0, total: 0}}

    , a[k]['sum'] += v

    , a[k]['total'] += 1)

    ), a), {});


console.log(sumObj);


const averageArr = Object.entries(sumObj).map(([k, {sum, total}]) => ({key: k, average: sum/total}));


console.log(averageArr);


查看完整回答
反对 回复 2023-09-14
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您可以使用map和reduce,就像给定多个键一样:


const exampleArray = [{swag: 3, count: 2}, {swag: 4, count: 10}];


// converting into array with only the key you want to use

const countArray = exampleArray.map((element) => element.count); // an array with just {count: value} elements in them.


// ... now reduce like normally


查看完整回答
反对 回复 2023-09-14
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信