2016-04-09 251 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

反对的任何理由?匿名投票没有评论没有帮助任何人,我真的想知道哪里有问题,以便我可以从中学习并纠正答案。 –