Javascript 下划线将对象数组映射到id为键的新对象

Javascript 下划线将对象数组映射到id为键的新对象,javascript,underscore.js,Javascript,Underscore.js,如何将此对象数组映射到一个新的对象数组,其中对象的id是键,其值是对象 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}} ] 尝试上述未捕获的语法错误:意外标记。(…… 首先,在

如何将此对象数组映射到一个新的对象数组,其中对象的id是键,其值是对象

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小提琴中,你没有包括在内,但这会起作用:

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

首先,在你的JS小提琴中,你没有包括,但这会起作用:

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

如果您乐于使用ES6功能,则可以使用arrow函数,该函数使用计算属性名称:

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

如果您乐于使用ES6功能,则可以使用arrow函数,该函数使用计算属性名称:

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

反对票的原因是什么?没有评论的匿名否决票对任何人都没有帮助,我真的很想知道哪里有问题,这样我就可以从中学习并更正答案。也不确定@grufbunny,我不知道我需要对象周围的
()
,这个助手意味着否决票的原因?匿名拒绝投票没有任何评论对任何人都没有帮助,我真的很想知道哪里有问题,这样我就可以从中学习并更正答案。也不确定@grufbunny,我不知道我需要对象周围的
()
,这个助手meI试图找到更好的方法,我最终使用了这个方法。我试图找到一个更好的方法,我最终使用了这个方法。我认为您正在寻找一个空对象,而不是从一个空对象开始,并在迭代
玩家的数组时逐键构建它。如果您确实想要返回数组,请将最后一个对象包装到数组中。但我很确定这不是你的意图。我认为你是在寻找一个空对象,而不是从一个空对象开始,在你迭代
玩家的数组时一个键一个键地构建它。如果您确实想要返回数组,请将最后一个对象包装到数组中。但我很确定那不是你的意图。