[英]Reduce array to object using arrow function
我正在嘗試使用數組和箭頭函數的限制,並嘗試將此 reduce 函數轉換為箭頭函數:
var monthsById = months.reduce(function(result, month) {
result[month.Id] = month;
return result;
}, {});
但是我無法返回地圖,因為result[month.Id] = month;
將返回月份而不是像這種方法中的地圖:
var monthsById = months.reduce((byId, month) => byId[month.Id] = month, {});
所以我正在尋找一個單一的語句,它設置值並返回對象。 ( new Map()
不是一個選項,因為我需要常規的{}
格式)。
var months = [ { Id: 1 }, { Id: 2 }, { Id: 3 } ]; var monthsById = months.reduce((byId, month) => byId[month.Id] = month, {}); console.log(monthsById);
您可以在每次迭代中返回byId
並將函數體包裝在括號中()
var months = [ { Id: 1 }, { Id: 2 }, { Id: 3 } ]; var monthsById = months.reduce((byId, month) => (byId[month.Id] = month, byId), {}); console.log(monthsById);
您可以使用Object.assign
設置具有計算屬性名稱的新屬性並返回整個對象。
var months = [{ Id: 1 }, { Id: 2 }, { Id: 3 }], monthsById = months.reduce((byId, month) => Object.assign(byId, { [month.Id]: month }), {}); console.log(monthsById);
一個傳播的例子。
var months = [{ Id: 1 }, { Id: 2 }, { Id: 3 }], monthsById = months.reduce((byId, month) => ({ ...byId, [month.Id]: month }), {}); console.log(monthsById);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.