数据处理: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);

原文链接:https://www.garfield27.com/2021/11/10/3d571f5cd196/