【问题标题】:Iterate over immutablejs Map values in TypeScript在 TypeScript 中迭代 immutablejs 映射值
【发布时间】:2018-09-11 06:32:39
【问题描述】:

我想用 for 循环迭代 immutable.js 映射的值,因为这是 TypeScript 中的首选方式,尤其是使用迭代器协议。我正在寻找类似的东西

const map = Map<string, number>();
for (const num of map.values()) {
    ...
}

但是,map.values()“不是数组,不是字符串,也没有 Symbol.iterator 方法”。

【问题讨论】:

    标签: typescript immutable.js


    【解决方案1】:

    用户使用 valueSeq() 方法而不是 values() 来迭代 Map。

    您可以使用 forEachfor 如下所示

    const map1 = Immutable.Map({
      abc: 9999,
      def: 1111,
      ghi: 4444,
      jkl: 23
    });
    
    map1.valueSeq().forEach(v => console.log(v));
    
    for (const num of map1.valueSeq()) {
      console.log('num ', num)
    }
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"&gt;&lt;/script&gt;

    【讨论】:

    • 感谢您的回答和 sn-p,它适用于 JavaScript。你试过 TypeScript 吗?我得到[ts] Type "Indexed&lt;number&gt;" is no array type...for 循环。
    • 打字稿中的用户 map1.valueSeq().toArray()
    • 嗯,那不是很漂亮而且很贵,但是很有效。猜猜我必须手动摆弄迭代器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2020-01-23
    相关资源
    最近更新 更多