2016-04-09 288 views
0

如何將此對象數組映射到新對象的數組,其中對象的ID是鍵並且其值是對象?將下劃線的對象數組映射到ID爲key的新對象

var players = [{id: 2, score: 5}, {id: 3, score: 10}] 

var mapped = _.map(players, function(x) { return {x.id: x}}) 

// desired output = [{2: {id: 2, score: 4}, {3: {id: 3, score: 10}} ] 

我得到一個語法錯誤試圖在你的JS小提琴你不包括underscore上述Uncaught SyntaxError: Unexpected token .(…)

JSFiddle

回答

1

首先,但這將工作:

var mapped = _.map(players, function(player) { 
    var playerObj = {}; 
    playerObj[player.id] = player; 
    return playerObj; 
}) 
+0

我想弄清楚一個更好的方法,我使用這種方法結束。 –

0

如果你很高興使用ES6功能,那麼你可以使用一個箭頭函數,它使用一個計算屬性名稱:

var mapped = _.map(players, player => ({ [player.id] : player})); 
+0

反對的任何理由?匿名投票沒有評論沒有幫助任何人,我真的想知道哪裏有問題,以便我可以從中學習並糾正答案。 –