将一组对象组合成一个OBJECT



我正在努力寻找一种方法将对象数组组合成一个对象。到目前为止,我遇到的所有解决方案的结果都是一个数组,但我需要一个对象。下面是一个例子:

[
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},
...
]

数组中可以有多个对象。我想把它们弄平,得到这样的输出:

{
'3258458756': '9',
'3654125412': '5',
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3'
}

注意,重复的键会被最后一个数组的值覆盖。到目前为止,我看到的解决方案都是这样的,对我来说不太管用。

let data = [
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},

];

let result = {};
data.forEach(x=>{

Object.entries(x).forEach(([k,v])=>result[k]=v)

})

console.log(result)

let data = [
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},

];

let result = {};
data.forEach(x=>{

result = {...result, ...x}

})

console.log(result)

下面是使用Array.prototype.reduce的方法:

[
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},
].reduce(
(acc, curr) => ({
...curr,
...acc,
}),
{}
);

每当我需要"减少"的时候当数组转换为标量或对象类型时,通常考虑reduce

这可以通过一个命令实现。使用Object.assign并将数组扩展到。

Object.assign({}, ...[
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},
])

这样吗?

const arr1 = 
[ { '1112225544': '1'
, '3258458756': '9'
, '3654125412': '5'
} 
, { '2229993827': '0'
, '9827719902': '1'
, '0000000000': '2'
, '1112225544': '3'
}
//...
] 
const arr2 = arr1.reduce((r,c)=>
{
Object.entries(c).forEach(([k,v]) => r[k] = v )
return r
},{})
console.log( arr2 )
.as-console-wrapper { max-height: 100% !important; top: 0 }

或者老办法:

let items = [
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},
];

let result = {};
for (let item of items)
result = Object.assign(result, item)
console.log(result)

let arr = [{1112225544:"1",3258458756:"9",3654125412:"5"},{2229993827:"0",9827719902:"1","0000000000":"2",1112225544:"3"}];
let result = Object.fromEntries(arr.flatMap(e => Object.entries(e)))
console.log(result)

相关内容

  • 没有找到相关文章