从 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
构造函数将可迭代对象的可重复对象(在本例中为数组的数组)作为第一个参数。主数组中的每个元素都是映射中的一个条目,键是元素的第一个元素,值是元素的第二个元素。
我有一组这样的对象...
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
构造函数将可迭代对象的可重复对象(在本例中为数组的数组)作为第一个参数。主数组中的每个元素都是映射中的一个条目,键是元素的第一个元素,值是元素的第二个元素。