如何将一个数组中多个对象的值取出来放到一个对象里

新手上路,请多包涵

如何将一个数组中多个对象的值取出来放到一个对象里,如arr=[{a:1,b:3},{a:2,b:4}],合并成一个对象放在数组里[{a1:1,a2:2,b1:3,b2:4}]

阅读 9k
4 个回答

let temp = []
let arr=[{a1:1,b1:3},{a2:2,b2:4}]
let obj = Object.assign(...arr)
temp.push(obj)

const merge = arr => arr.reduce((acc,cur)=>{
  for (let key in cur){
    let i = 1;
    while(acc[key+i]){
      i++
    }
    acc[key+i]=cur[key]
  };
  return acc
},{})

应该还可以优化一下,记住上次i的值。

借用了gentlecoder的思路,记录了相同属性名的个数,性能会好一些

let arr=[{a:1,b:3},{a:2,b:4}];
const merge = arr => {
  let record = {};
  let result = {};
  arr.forEach((cur,key) => {
    Object.keys(cur).forEach((key) => {
    record[key] ? record[key]++ : record[key] = 1;
    result[key + record[key]] = cur[key];
    });
  });
  return result;
}
console.log([merge(arr)]);
const arr = [{a: 1, b: 2}, {a: 2, b: 3}]
const obj = arr.reduce((pre, cur, index) => {
    Object.keys(cur).forEach(key => pre[`${key}${index+1}`] = cur[key])
    return pre
}, {})
console.log([obj])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题