【问题标题】:How to loop through an Immutable Map of Immutable Maps?如何遍历不可变映射的不可变映射?
【发布时间】:2017-03-21 09:48:18
【问题描述】:

我有一张不可变的地图。

let mapOfMaps = Immutable.fromJS({
    'abc': {
         id: 1
         type: 'request'
    },
    'def': {
        id: 2
        type: 'response'
    },
    'ghi': {
        type: cancel'
    },
    'jkl': {
        type: 'edit'
    }
});

我该怎么做

  1. 遍历 mapOfMaps 并获取所有键以将它们打印出来?
  2. 遍历mapOfMaps的key,获取key的所有内容?

现阶段我没有切换到列表的选项。

我不知道如何遍历键。

【问题讨论】:

  • 提供一个期望结果的例子。你知道如何以 1 级深度迭代 Map 的键吗?

标签: javascript loops immutable.js


【解决方案1】:

使用keySeq()/valueSeq() 方法,您可以获得键/值序列。然后您可以使用 forEach() 进行迭代:

let mapOfMaps = Immutable.fromJS({
    abc: {
         id: 1,
         type: 'request'
    },
    def: {
        id: 2,
        type: 'response'
    },
    ghi: {
        type: 'cancel'
    },
    jkl: {
        type: 'edit'
    }
});

// iterate keys
mapOfMaps.keySeq().forEach(k => console.log(k));

// iterate values
mapOfMaps.valueSeq().forEach(v => console.log(v));

此外,您还可以使用entrySeq() 在一个循环中进行迭代:

mapOfMaps.entrySeq().forEach(e => console.log(`key: ${e[0]}, value: ${e[1]}`));

【讨论】:

  • 谢谢,对我帮助很大。由
  • 黄金。遗憾的是,ImmutableJS 描述是面向 TypeScript 的,因此对于很多人来说很难理解。
【解决方案2】:

如果我们需要同时使用 key:value,我们也可以使用forloop。 forloop 提供了将break; 放入所需条件匹配的灵活性。

//Iterating over key:value pair in Immutable JS map object.

for(let [key, value] of mapOfMaps) {
       console.log(key, value)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2023-04-09
    • 2011-03-26
    相关资源
    最近更新 更多