合并与返回新数据

type相同的对象合并成一个对象, 有没有最快捷的方式, 非常感谢!

var arr = [
      {
        type: "A",
        name: "小A",
      },
      {
        type: "A",
        age: 20
      },
      {
        type: "A",
        sex: '男'
      },
      {
        type: "B",
        sex: '女'
      },
      {
        type: "B",
        age: 16
      },
      {
        type: "C",
        name: '小C'
      },
      {
        type: "C",
        age: 16
      }
    ]
    转化成
    var arr = [
      {
        type: "A",
        name: "小A",
        age: 20,
        sex: '男'
      },
      {
        type: "B",
        name: "小A",
        age: 16,
        sex: '女'
      },
      {
        type: "C",
        name: '小C',
        age: 16
      }
    ]
阅读 1.3k
1 个回答
Object.values([
      {
        type: "A",
        name: "小A",
      },
      {
        type: "A",
        age: 20
      },
      {
        type: "A",
        sex: '男'
      },
      {
        type: "B",
        sex: '女'
      },
      {
        type: "B",
        age: 16
      },
      {
        type: "C",
        name: '小C'
      },
      {
        type: "C",
        age: 16
      }
    ].reduce((res, v) => (res[v.type] = {...(res[v.type]||{}), ...v}, res), {}))
    
Object.values([
      {
        type: "A",
        name: "小A",
      },
      {
        type: "A",
        age: 20
      },
      {
        type: "A",
        sex: '男'
      },
      {
        type: "B",
        sex: '女'
      },
      {
        type: "B",
        age: 16
      },
      {
        type: "C",
        name: '小C'
      },
      {
        type: "C",
        age: 16
      }
    ].reduce((res, v) => (Object.assign(res[v.type]||={},v), res), {}))
    
推荐问题