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

Underscore map array of object to new object with id as key

如何将这个对象数组映射到一个新的对象数组,其中对象的 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}} ]

我在尝试上述操作时遇到语法错误 Uncaught SyntaxError: Unexpected token .(…)

JSFiddle

首先,在您的 JS Fiddle 中您没有包含 underscore,但这会起作用:

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

如果您对使用 ES6 功能感到满意,那么您可以使用箭头函数,它使用计算出的 属性 名称:

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