如何循环遍历不可变映射的不可变映射

How to loop through an Immutable Map of Immutable Maps?

本文关键字:不可变 映射 遍历 循环 何循环      更新时间:2023-09-26

我有一个不可变的map of maps

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

我怎么能

  1. 通过mapOfMaps循环并得到所有的键打印出来?
  2. 循环通过mapOfMaps的键来获得键的所有内容?

在这个阶段我没有切换到List的选项。

我不知道怎么遍历键

使用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]}`));

如果我们需要同时使用key:value,我们也可以使用for循环。

for循环提供了为所需条件匹配放置break;的灵活性。
//Iterating over key:value pair in Immutable JS map object.
for(let [key, value] of mapOfMaps) {
       console.log(key, value)
}