数组重新组合

一个数组:

var a = [
    {
        id: 5,
        name: 'a',
        age: '16'
    },
    {
        id: 5,
        name: 'b',
        age: '17'
    },
    {
        id: 5,
        name: 'c',
        age: '16'
    },
    {
        id: 6,
        name: 'd',
        age: '16'
    }
];

现在想把他转换成这样:

var b = [
    {
        id: 5,
        name: [
            a,
            b,
            c
        ],
        age: [
            16,
            17,
            16
        ]
    },
    {
        id: 6,
        name: 'd',
        age: '16'
    }
];

就是说,把id相同的两个合并,不相同的不变,怎么弄···

阅读 1.5k
1 个回答

只能循环遍历

var ret = {};
for(let person of a) {
  let { id, name, age } = person;
  if(ret[id]) {
    ret[id].name = [].concat(ret[id].name, name);
    ret[id].age = [].concat(ret[id].age, age)
  } else {
    ret[id] = { id, name, age }
  }
}
ret = Object.values(ret);
console.log(ret);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题