组对象在Javascript中的数组对象中具有相同的属性

问题描述

我有数组对象,所以我需要组对象具有相同的BrandId,并具有特殊属性

arayExample:

[
{
            "BrandId": "5a52f163b56fbc1164c3f69a","ActionCode": "MapNewInsert","Total": 126,"TotalProduct": 127,"TotalBrand": 2
        },{
            "BrandId": "5a52f163b56fbc1164c3f69a","ActionCode": "MapNewUpdate","Total": 0,"ActionCode": "VerifyUpdate","ActionCode": "VerifyDelete","ActionCode": "Solved","Total": 1,{
            "BrandId": "5c10d62821cdfb2448a10a9c","Total": 398,"TotalProduct": 398,"TotalBrand": 2
        }
]

特殊是: “ ActionCode”中的value成为key的{​​{1}},而该项目中的Total成为该value的{​​{1}}。

示例:ActionCode的key MapNewInsert ,并且在此项目中具有“总数”值。变成:“ MapNewInsert”:“ 398(总值)” 这是我想要的结果:

value

非常感谢您的帮助

解决方法

这可以通过Array Reduce Function完成。结果并不完全相同,但是您可以查看它是否对您有用。

let arr = [
            {
                BrandId: '5a52f163b56fbc1164c3f69a',ActionCode: 'MapNewInsert',Total: 126,TotalProduct: 127,TotalBrand: 2
            },{
                BrandId: '5a52f163b56fbc1164c3f69a',ActionCode: 'MapNewUpdate',Total: 0,ActionCode: 'VerifyUpdate',ActionCode: 'VerifyDelete',ActionCode: 'Solved',Total: 1,{
                BrandId: '5c10d62821cdfb2448a10a9c',Total: 398,TotalProduct: 398,TotalBrand: 2
            }
        ];
        const result = [
            ...arr
                .reduce((r,o) => {
                    const record = r.get(o.BrandId) || {};
                    r.set(o.BrandId,{
                        BrandId: o.BrandId,Statistics: {
                            [o.ActionCode]: o.Total,...record.Statistics
                        }
                    });
                    return r;
                },new Map())
                .values()
        ];

        console.log(result);