如何将一个数组中多个对象的值取出来放到一个对象里,如arr=[{a:1,b:3},{a:2,b:4}],合并成一个对象放在数组里[{a1:1,a2:2,b1:3,b2:4}]
如何将一个数组中多个对象的值取出来放到一个对象里,如arr=[{a:1,b:3},{a:2,b:4}],合并成一个对象放在数组里[{a1:1,a2:2,b1:3,b2:4}]
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])
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
let temp = []
let arr=[{a1:1,b1:3},{a2:2,b2:4}]
let obj = Object.assign(...arr)
temp.push(obj)