[英]How do i group data from object?
我想返回一個按類型分組的數組,這是我的數據:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.