需求:[{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)
输出结果: