Undercore将对象的数组映射到以id为键的新对象

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

本文关键字:对象 新对象 数组 映射 Undercore id      更新时间:2024-04-04

如何将此对象数组映射到一个新的对象数组,其中对象的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中没有包含下划线,但这会起作用:

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

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

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