从 Typescript 中的对象数组设置 ES6 映射?

Set a ES6 Map from an array of objects in Typescript?

我有一组这样的对象...

const myObjects: MyObjects[] = [{id: 1, data: "blah"}, {id: 2, data: "foo"}, {id: 3, data: "bar"}];

我想根据 id 将此数据设置为 Map

我现在的方法是 forEach 循环,但是在 Map 类型上是否有更简单的方法或我缺少的方法?我发现自己一遍又一遍地这样做,思考必须有一个更简单的方法。

const myMap = new Map<number, MyObject>();
myObjects.forEach(obj => {
  myMap.set(obj.id, obj);
});

我想将它们移动到 Map 以便通过 id 访问它们比遍历整个数组更容易。

Is there a simpler way or a method I am missing on the Map type?

“简单”有点主观。我通常使用这种方法,因为它适合一行,并且因为用一些元素初始化 Map 可能 比初始化它然后添加元素更快。

const myObjects: { id: number; data: string; }[] = [{id: 1, data: "blah"}, {id: 2, data: "foo"}, {id: 3, data: "bar"}];
const myMap = new Map(myObjects.map(obj => [obj.id, obj]));

解释: Map 构造函数将可迭代对象的可重复对象(在本例中为数组的数组)作为第一个参数。主数组中的每个元素都是映射中的一个条目,键是元素的第一个元素,值是元素的第二个元素。