合并与返回新数据

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.2k
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), {}))
    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题