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

时间:2017-02-06 13:05:11

标签: javascript arrays lodash javascript-objects key-value

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

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

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

someObject = {
    foo: 1,
    bar: 2
}

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

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

0: {foo: 1}

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

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

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

由于

3 个答案:

答案 0 :(得分:8)

此处不需要lodash,您只需使用Object.assign()并传播语法。

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

您也可以使用apply代替传播语法

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

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

答案 1 :(得分:2)

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



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

console.log(result);




答案 2 :(得分:1)

可以使用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; }