Как пройти через неизменяемую карту неизменяемых карт?

У меня есть неизменяемая карта карт.

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

Как я могу

  • пройдите через mapOfMaps и получите все ключи, чтобы распечатать их?
  • прокручивать ключи mapOfMaps, чтобы получить все содержимое ключа?

У меня нет возможности переключиться на Список на этом этапе.

Я не знаю, как прокручивать ключи.

Ответ 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]}`));

Ответ 2

Если нам нужен ключ: значение вместе, мы также можем использовать цикл for. Цикл for обеспечивает гибкость для установки break; для желаемого соответствия условий.

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

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

}