我尝试使用缩小版或地图,但有时候我会成为菜鸟。
我试图使用此函数从对象返回单个数组。
/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);
答案 0 :(得分:5)
您可以使用Object.assign
和spread syntax ...
。
var obj = [{ a: 1 }, { b: 2 }, { c: 3 }];
console.log(Object.assign({}, ...obj));

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);