我想返回按类型分组的数组,这是我的数据:
const array = [
{Type: 1, data: { '11': 10, '12': 10 }},
{Type: 1, data: { '11': 20, '13': 20 }},
{Type: 2, data: { '14': 10, '15': 20 }}
];
我使用Array.forEach和Object.keys ...
但是我对那些功能不熟悉
我如何像这样对数据分组:
{
1 : {
"11" : {
"sum" : 30,
"count" : 2
},
"12" : {
"sum" : 10,
"count" : 1
},
"13" : {
"sum" : 20,
"count" : 1
},
},
2 : {
"14" : {
"sum" : 10,
"count" : 1
},
"15" : {
"sum" : 20,
"count" : 1
},
}
}
使用reduce函数按类型分组并在您需要的条件下使用它
const array = [{
Type: 1,
data: {
'11': 10,
'12': 10
}
},
{
Type: 1,
data: {
'11': 20,
'13': 20
}
},
{
Type: 2,
data: {
'14': 10,
'15': 20
}
}
];
var res = array.reduce((acc, curr) => {
if (acc[curr.Type]) {
for (key in curr.data) {
if (acc[curr.Type][key]) {
acc[curr.Type][key] = {
"sum": acc[curr.Type][key].sum + curr.data[key],
"count": 1 + acc[curr.Type][key].count
};
} else {
acc[curr.Type][key] = {
"sum": curr.data[key],
"count": 1
};
}
}
} else {
acc[curr.Type]={};
for (key in curr.data) {
acc[curr.Type][key] = {
"sum": curr.data[key],
"count": 1
};
}
}
return acc;
}, {})
console.log(res);