繁体   English   中英

展平包含键\\值的对象数组

[英]Flatten an array of objects containing key\values

假设我有以下对象数组存储单个键\\值对:

var someArray = [
    {foo: 1},
    {bar: 2}
];

我想将此数组展平为单个对象,其中原始对象中的每个键都成为新单个对象的属性,如下所示:

someObject = {
    foo: 1,
    bar: 2
}

我将始终拥有唯一的密钥,并且只有一个密钥\\值配对。

我知道如果我在foreach中循环遍历数组,那么我只能访问项目的索引和值,例如

0: {foo: 1}

我希望能够循环,当访问该项时,分别读取键和值,以便我可以附加到我的新对象上。

我觉得lodash应该可以在这里提供帮助,但我很难找到他们的方法可以帮助的时候。

有人能指出我正确的方向吗?

谢谢

这里不需要lodash你只需使用Object.assign()和传播语法。

 var someArray = [ {foo: 1}, {bar: 2} ]; var obj = Object.assign({}, ...someArray) console.log(obj) 

您还可以使用apply而不是spread语法

var obj = Object.assign.apply({}, someArray)

 var someArray = [ {foo: 1}, {bar: 2} ]; var obj = Object.assign.apply({}, someArray) console.log(obj) 

您可以迭代并使用Object.assign来获取具有所有属性的新对象。

 var someArray = [{ foo: 1 }, { bar: 2 }], result = someArray.reduce(function (r, a) { return Object.assign(r, a); }, {}); console.log(result); 

这可以使用reduceObject assign快速完成:

 var someArray = [ {foo: 1}, {bar: 2} ]; var result = someArray.reduce((acc, obj) => Object.assign(acc, obj), {}) console.log(result) 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM