web-dev-qa-db-ja.com

不変マップの不変マップをループする方法は?

マップの不変のマップを持っています。

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

どうやって

  1. mapOfMapsをループして、すべてのキーを取得して印刷しますか?
  2. mapOfMapsのキーをループして、キーのすべてのコンテンツを取得しますか?

この段階でリストに切り替えるオプションはありません。

キーをループする方法がわかりません。

13
user1261710

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()を使用して、1つのループで両方を繰り返すことができます。

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

Key:valueが一緒に必要な場合は、forloopも使用できます。 forloopは、目的の条件に一致するようにブレークを設定する柔軟性を提供します。

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

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

}
0
sat20786