热门使用reduce将对象数组转换为单个对象

时间:2017-09-09 18:34:23

标签: javascript

我尝试使用缩小版或地图,但有时候我会成为菜鸟。

我试图使用此函数从对象返回单个数组。

/basic/alphabets

但我总是得到:

  

未捕获的TypeError:无法读取属性'符号(Symbol.iterator)'   未定义的

我搜索了很多,但这些例子并没有帮助我...我认为这很简单,但1小时后,我什么都没有。

我想要的......

var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];
    var result = obj.reduce((obj, item) => [item.key] = item.value);
    console.log(result);

3 个答案:

答案 0 :(得分:5)

您可以使用Object.assignspread syntax ...



var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];

console.log(Object.assign({}, ...obj));




Array#reduce



var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];

console.log(obj.reduce((r, o) => Object.assign(r, o), {}));




没有Object.assign



var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];

console.log(obj.reduce((r, o) => (Object.entries(o).forEach(([k, v]) => r[k] = v), r), {}));




ES5



var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];

console.log(obj.reduce(function (r, o) {
    Object.keys(o).forEach(function (k) {
        r[k] = o[k];
    });
    return r;
}, {}));




答案 1 :(得分:2)

如果你想使用reduce:

var arr = [{ a: 1 }, { b: 2 }, { c: 3 }];

var result = arr.reduce((obj, item) => Object.assign(obj, item), {});

在有疑问时检查MDN documentation

答案 2 :(得分:1)

您可以使用reduce

以下列方式执行此操作



var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];
    var result = obj.reduce((obj, item) =>  {
    Object.assign(obj, item)
    return obj;
    }, {});
    console.log(result);