web-dev-qa-db-fra.com

Comment faire défiler une carte immuable de cartes immuables?

J'ai une carte immuable de cartes.

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

Comment puis-je

  1. faire une boucle dans mapOfMaps et obtenir toutes les clés pour les imprimer? 
  2. parcourir les clés de mapOfMaps pour obtenir tout le contenu de la clé?

Je n'ai pas la possibilité de passer à une liste à ce stade.

Je ne sais pas comment passer en revue les clés.

11
user1261710

Avec la méthode keySeq()/valueSeq(), vous obtenez une séquence de clés/valeurs. Ensuite, vous pouvez le parcourir par exemple avec 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));

De plus, vous pouvez itérer les deux dans une boucle avec entrySeq():

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

Si nous avons besoin de clé et de valeur ensemble, nous pouvons également utiliser forloop. forloop permet de mettre en pause une correspondance avec la condition souhaitée.

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

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