数组下的list下的deviceId我要把id相等的放在一起,怎么实现呢?

现在的格式

            let myData = [
                    {
                        areaId:112,
                        areaName:"法规的说法",
                    list:[
                        {deviceId:59,deviceName:"个梵蒂冈1",age:18},
                        {deviceId:62,deviceName:"个梵蒂冈2",age:20},
                        {deviceId:70,deviceName:"个梵蒂冈32",age:10},
                        {deviceId:70,deviceName:"个梵蒂冈156",age:636},
                    ]
                    },
                    {
                        areaId:118,
                        areaName:"范德萨发",
                    list:[
                        {deviceId:80,deviceName:"是的1",age:3534},
                        {deviceId:80,deviceName:"是的2",age:4},
                        {deviceId:85,deviceName:"是的32",age:54},
                        {deviceId:90,deviceName:"是的156",age:35},
                    ]
                    }
                    
                ],

我要把list下deviceId相等的放在一起生成一个数组对象listDId,里面deviceId相等的就在一块了

             let myData= [
                    {
                            areaId:112,
                            areaName:"法规的说法",
                        list:[
                            {
                                deviceId:59,deviceName:"个梵蒂冈1",age:18,
                                listDId:[//deviceId只有一个相等的就一个
                                   {deviceId:59,deviceName:"个梵蒂冈1",age:18}
                                ],
                            },
                            {
                                deviceId:62,deviceName:"个梵蒂冈2",age:20,
                                listDId:[//deviceId只有一个相等的就一个
                                    {deviceId:62,deviceName:"个梵蒂冈2",age:20}
                                ]
                            },
                            {
                                deviceId:70,deviceName:"个梵蒂冈32",age:10,
                            listDId:[//deviceId有两个相等的放在一起
                                {deviceId:70,deviceName:"个梵蒂冈32",age:10},
                                {deviceId:70,deviceName:"个梵蒂冈156",age:636}
                            ]
                            },
                        ]
                    },
                    {
                        areaId:118,
                        areaName:"范德萨发",
                    list:[
                        {
                            deviceId:80,deviceName:"是的1",age:3534,
                        listDId:[
                            {deviceId:80,deviceName:"是的1",age:3534},
                            {deviceId:80,deviceName:"是的2",age:4}
                            ]
                        },
                        {
                            deviceId:85,deviceName:"是的32",age:54,
                        listDId:[
                            {deviceId:85,deviceName:"是的32",age:54}
                            ]
                        },
                        {
                            deviceId:90,deviceName:"是的156",age:35,
                        listDId:[
                            {deviceId:90,deviceName:"是的156",age:35}
                            ],
                        },
                    ]
                    }
                ]

这个怎么实现呢?deviceId相同的放在一起了,单个的也是生成一个。在线等.........

阅读 1.4k
1 个回答
function transform(arr) {
    var ret = [];
    if (Array.isArray(arr) && arr.length) {
        for (var i = 0; i < arr.length; i++) {
            var a = arr[i];
            var obj = {};
            obj.areaId = a.areaId;
            obj.areaName = a.areaName;
            obj.list = [];
            for (var j = 0; j < a.list.length; j++) {
                var b = a.list[j];
                var index = obj.list.findIndex(function(n) {
                    return n.deviceId === b.deviceId;
                });
                if (~index) {
                    obj.list[index].listDId.push(b);
                } else {
                    var c = Object.assign({ listDId: [b] }, b);
                    obj.list.push(c);
                }
            }
            ret.push(obj);
        }
    }
    return ret;
}
console.log(transform(myData));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题