JavaScript 將物件陣列轉換成陣列的物件
假設我們有以下以物件陣列排列的有關團隊的資料,我們的任務是將此資料轉換為以角色為鍵、以玩家名稱陣列為值的物件。
我們的示例陣列 −
const team = [{ role: 'Batsman', player: 'V Kohli' }, { role: 'Wicket Keeper', player: 'KL Rahul' }, { role: 'Batsman', player: 'R Sharma' }, { role: 'Wicket Keeper', player: 'R Pant' }, { role: 'Bowler', player: 'B Kumar' }, { role: 'Bowler', player: 'M Shami' }, ]
讓我們定義一個函式 objectify(),它將陣列作為引數並返回相應的物件。
程式碼如下 −
const objectify = (team) => { const teamObject = {}; team.forEach(member => { if(teamObject[member.role]){ teamObject[member.role].push(member.player); }else{ teamObject[member.role] = [member.player]; } }); return teamObject; } console.log(objectify(team));
在這裡,我們挨個遍歷每個陣列項,如果它存在於 teamObject 中,我們將該玩家推入其中;否則,我們將為其分配一個包含單個玩家的陣列
以下為完整程式碼 −
示例
const team = [{ role: 'Batsman', player: 'V Kohli' }, { role: 'Wicket Keeper', player: 'KL Rahul' }, { role: 'Batsman', player: 'R Sharma' }, { role: 'Wicket Keeper', player: 'R Pant' }, { role: 'Bowler', player: 'B Kumar' }, { role: 'Bowler', player: 'M Shami' }, ] const objectify = (team) => { const teamObject = {}; team.forEach(member => { if(teamObject[member.role]){ teamObject[member.role].push(member.player); }else{ teamObject[member.role] = [member.player]; } }); return teamObject; } console.log(objectify(team));
輸出
此程式碼在控制檯中的輸出如下 −
{ Batsman: [ 'V Kohli', 'R Sharma' ], WicketKeeper: [ 'KL Rahul', 'R Pant' ], Bowler: [ 'B Kumar', 'M Shami' ] }
廣告