需求:[{a: 1, b: 2, c: 3},{a: 2, b: 11, c: 23}] 把它转换成 {a: [1, 2], b: [2,11], c: [3, 23]}

 

分析:首先循环遍历数组,取得对象后获取key,再将key添加到新的obj内(注意添加的使用需要判断obj内是否已存在相同key 不要重复添加key),最后将key对应的value值push到对应key的数组内。

 

由于为了方便,所以采用的reduce 搭配Object.keys将对象的key转成数组,再对改数组使用map进行循环遍历,最后根据条件生成新数组

 let arr = [
      { a: 1, b: 2, c: 3 },
      { a: 2, b: 11, c: 23 },
    ]
    let newArr = arr.reduce((obj, cur, index) => {
      Object.keys(cur).map((item) => {
        if (!obj[item]) {
          obj[item] = [cur[item]]
        } else {
          obj[item].push(cur[item])
        }
      })
      return obj
    }, {})
    console.log(newArr)

输出结果: