gpt4 book ai didi

javascript - 如何对对象数据进行求和和分组?

转载 作者:行者123 更新时间:2023-12-01 15:59:39 26 4
gpt4 key购买 nike

如上所述,如何对对象数据进行求和和分组?
我尝试使用 forEach & Object.key() 对数据进行分组。
但是我对它不是很熟悉。
这是我的示例数据:

const srcArr =[
{
"1" : {
"60" : {
"point" : 10,
"count" : 1
},
"68" : {
"point" : 20,
"count" : 1
},
}
},
{
"2" : {
"60" : {
"point" : 100,
"count" : 2
}
}
},
{
"1" : {
"88" : {
"point" : 50,
"count" : 1
},
"68" : {
"point" : 20,
"count" : 1
},
}
},

我想要这样的数据:

{ 
'1': { '60': { money: 10, count: 1 },
'68': { money: 40, count: 2 },
'88': { money: 50, count: 1 }},
'2': { '60': { money: 100, count: 2 }}
}

最佳答案

试试这个

cc = [
{
"1" : {
"60" : {
"point" : 10,
"count" : 1
},
"68" : {
"point" : 20,
"count" : 1
},
}
},
{
"2" : {
"60" : {
"point" : 100,
"count" : 2
}
}
},
{
"1" : {
"88" : {
"point" : 50,
"count" : 1
},
"68" : {
"point" : 20,
"count" : 1
},
}
}
]
const result = cc.reduce((arr, o) =>{
let k = Object.keys(o)[0];
arr[k] = arr[k] || {};
let opo = o[k];
if(arr[k]) {
Object.keys(arr[k]).map(kk => {
Object.keys(o[k]).map(cc => {
if(kk === cc) {
opo[cc] = opo[cc] || {};
opo[cc].count = o[k][cc].count + arr[k][kk].count;
opo[cc].point = o[k][cc].point + arr[k][kk].point;
}
});
});
}
arr[k] = {...arr[k], ...opo};
return arr;
}, {});

console.log(result);

也许这就是您所期待的。忽略键命名约定:p

关于javascript - 如何对对象数据进行求和和分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60809706/

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