如何实现js二维数组去重, 将当前的属性值移到另外的对象中?

`

// 判断name的值是否有重复, 重复则去重, 把value的值放到相同name的value数组中
let arr = [{
  name: '床',
  value: ['床板']
}, {
  name: '衣柜',
  value: ['衣布']
}, {
  name: '床',
  value: ['模板']
}]

// 实际想要的效果
// let arr = [{
//  name: '床',
//  value: ['床板', '模板']
// }, {
//  name: '衣柜',
//  value: ['衣布']
// }]

`

`

// 自己的思路是循环数组, 判断name的值是否相等, 相等则将当前的值push到新的数组当中
for (let index = 0; index < arr.length; index++) {
  if (arr[i].name) {

  }
}

`

阅读 2.9k
1 个回答
function unite(array) {
    const map = {};
    for (const item of array) {
        const { name, value } = item;
        if (!map[name]) {
            map[name] = [];
        }
        map[name].push(...value);
    }
    return Object.keys(map).map(name => ({
        name,
        value: Array.from(new Set(map[name])),
    }));
}

let arr = [{
  name: '床',
  value: ['床板']
}, {
  name: '衣柜',
  value: ['衣布']
}, {
  name: '床',
  value: ['模板']
}, {
  name: '床',
  value: ['模板']
}];

console.log(unite(arr));
推荐问题