对象数组根据相同属性合并对象

221 阅读1分钟
  let arr = [
    {
      data: [
        { type: 1, count: 10 },
        { type: 2, count: 9 }
      ]
    },
    {
      data: [
        { type: 1, count: 8 },
        { type: 2, count: 7 }
      ]
    }
  ];
  let arr1 = []
  arr.map((val, index) => {
    val.data.map(item => {
      arr1.push(item)
    })
  })
  console.log("<<<<<<", arr1)
  const output = Object.values(
    arr1.reduce((res, o) => {
      if (!res[o.type]) {
        res[o.type] = { ...o, count: [] };
      }
      res[o.type].count.push(o.count);
      return res;
    }, {})
  );

  console.log(output);
  //打印结果
  

Snipaste_2022-09-20_16-08-22.png