【问题标题】:Set a ES6 Map from an array of objects in Typescript?从 Typescript 中的对象数组设置 ES6 Map?
【发布时间】:2021-12-27 00:04:13
【问题描述】:

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

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 访问它们而不是遍历整个数组。

【问题讨论】:

    标签: javascript arrays typescript ecmascript-6


    【解决方案1】:

    是否有更简单的方法或我在 Map 类型上缺少的方法?

    “简单”有点主观。我通常使用这种方法,因为它适合一行,而且用一些元素初始化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 构造函数将一个可迭代的可迭代对象(在本例中为数组数组)作为第一个参数。主数组中的每个元素都是映射中的一个条目,键是元素的第一个元素,值是元素的第二个元素。

    【讨论】:

    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多