簡體   English   中英

如何對對象中的數據進行分組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM