簡體   English   中英

熱門使用reduce將對象數組轉換為單個對象

[英]Hot to use reduce to convert a array of objects to a single object

我正在嘗試使用reduce或map,但有時候我是一個菜鳥。

我正在嘗試使用此函數從對象返回單個數組。

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

但我總是得到:

未捕獲的TypeError:無法讀取未定義的屬性'Symbol(Symbol.iterator)'

我搜索了很多,但這些例子並沒有幫助我...我認為這很簡單,但1小時后,我什么都沒有。

我想要的是..

[{a: 1}, {b: 2}, {c: 3}] to {a: 1, b: 2, c: 3}

你可以使用Object.assign傳播語法...

 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; }, {})); 

如果你想使用reduce:

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

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

如有疑問,請查看MDN文檔

您可以使用reduce以下列方式執行此操作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM