您好,匿名用户

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

0 投票

现在的格式

            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相同的放在一起了,单个的也是生成一个。在线等.........

用户头像 提问 2019年 5月23日 @ Rider 中士 (1,266 威望)
分享到:

1个回答

0 投票
 
最佳答案
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));
用户头像 回复 2019年 5月23日 @ Aries 中士 (1,173 威望)
选中 2019年 5月12日 @Rider
提一个问题:

相关问题

0 投票
1 回复 28 阅读
0 投票
1 回复 23 阅读
0 投票
1 回复 27 阅读
0 投票
1 回复 29 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...