簡體   English   中英

使用箭頭函數將數組縮減為對象

[英]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.

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