首页 > 解决方案 > 如果对象数组中的id匹配,如何插入名称值

问题描述

如果对象数组中的 id 匹配,如何插入名称值

var array = [{
  "id": 1,
  "name": "rohan1",
  "managerName": 'Charlic Martin'
},
{
  "id": 1,
  "name": "rohan2",
    "managerName": 'Charlic Martin'
},
{
   "id":2,
   "name": "rohan3",
   "managerName": 'Charlic Martin'
},
{
   "id":3,
   "name": "rohan3",
   "managerName": 'Charlic Martin'
}]

这是一个对象数组。

我需要以下输出:

[{
   "id":1,
   "name": "rohan1,rohan2",
   "managerName": 'Charlic Martin'
},{
   "id":2,
   "name": "rohan3",
   "managerName": 'Charlic Martin'
},
{
   "id":3,
   "name": "rohan3",
   "managerName": 'Charlic Martin'
}]

标签: javascriptarrays

解决方案


您可以使用每个对象的 id 来创建地图。如果再次找到具有相同 id 的对象,它将只是连接两个对象的名称

function groupObjects(arr) {
    const unique = {};
    arr.forEach(item => {
        const {id, name} = item;
        unique[id] ? unique[id]['name'] += `,${name}` : unique[id] = item;
    });
    return Object.values(unique);
}

推荐阅读