数据处理:js数组根据数组对象中某个属性进行分组
需求:已知一数组,按数组中对象的id进行如下效果分组处理返回新的数组。
原数组:
[
{ id: ‘1’, oid: ‘100001’ },
{ id: ‘2’, oid: ‘100002’ },
{ id: ‘1’, oid: ‘100003’ },
{ id: ‘1’, oid: ‘100004’ },
]
处理后:
[
{ id: ‘1’, oid: [ ‘100001’, ‘100003’, ‘100004’ ] },
{ id: ‘2’, oid: [ ‘100002’ ] },
]
let arr = [
{ id: '1', oid: '100001' },
{ id: '2', oid: '100002' },
{ id: '4', oid: '100003' },
{ id: '2', oid: '100004' },
{ id: '2', oid: '100005' },
{ id: '4', oid: '100006' },
{ id: '2', oid: '100007' },
{ id: '1', oid: '100008' },
{ id: '5', oid: '100009' },
]
let map = [];
let res = [];
arr.forEach(item => {
if (map.indexOf(item.id) < 0) {
res.push({
id: item.id,
oid: [item.oid]
})
map.push(item.id);
} else {
res.forEach(obj => {
if (obj.id == item.id) {
obj.oid.push(item.oid)
}
})
}
})
console.log(res);