[英]Combine an array of objects into one 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
。
这边走 ?
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)
这可以通过一个命令来实现。 使用Object.assign
并在其中传播数组。
Object.assign({}, ...[
{
'1112225544': '1',
'3258458756': '9',
'3654125412': '5',
},
{
'2229993827': '0',
'9827719902': '1',
'0000000000': '2',
'1112225544': '3',
},
])
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.