[js知识小记]将对象数组按指定属性处理

104 阅读1分钟

需求:后端返回一个数组

[{"id": 11,"group": "client"}, {"id": 12,"group": "client"}, {"id": 13,"group": "manage"}]

将获取到的数组,通过group字段来去区分,把相同组的id提取到一个数组中,用组来做键名,希望得到如何结构:

{client:[11,12],manage:[13]}

数组长度不固定,组的类别不固定。

let groupArr = [{"id": 11,"group": "client"}, {"id": 12,"group": "client"}, {"id": 13,"group": "manage"}];
let groupSet = new Set();
let groupObj = {}
groupArr.forEach(val=>{
    if(!groupSet.has(val.group)){//没有值,添加
        groupSet.add(val.group)
        groupObj[val.group] = []
        groupObj[val.group].push(val.id)
    }else{
        groupObj[val.group].push(val.id)
    }
})