数组对象的合并分组

2019-05-29  本文已影响0人  大梦无痕

通过某个字段去重数组对象,例如:id

          var arr = [{
                id: 0,
                test: "艾希"
            },
            {
                id: 7,
                test: "安妮"
            },
            {
                id: 7,
                test: "维嘉"
            },
            {
                id: 7,
                test: "无极"
            },
            {
                id: 6,
                test: "剑姬"
            },
            {
                id: 0,
                test: "拉克丝"
            }
        ]

方法1

let map = {};
let mapArray = [];
for(const i in arr) {
    let item = arr[i];
    map[item['id']] = {
        arr: (map[item['id']]?map[item['id']].arr:[]).concat([item]),
        id:item.id
    };
}
for(var key in map) {
    mapArray.push(map[key]);
}
console.log(mapArray);

结果


image.png

方法2

        var idList = [...new Set(arr.map((e)=>{return e.id}))];
        var list = [];
        idList.forEach((e)=>{
            var item = arr.filter((res)=>{
                return res.id==e;
            })
            list.push({
                id:e,
                list:item
            })
        })
        console.log(list)
结果 image.png
上一篇下一篇

猜你喜欢

热点阅读