Una mappa è semplicemente un insieme di chiavi con valori. Quello che hai è una mappa con la chiave categories
e il valore {1: 'a', 2: 'b'}
. Il valore non diventa automaticamente una mappa Immutabile solo perché lo inserisci in un'altra mappa.
Ora, la funzione getIn()
vedrà solo "altre mappe Immutable.js. Quello che hai dentro è un normale oggetto javascript ol. Se si desidera solo per ottenere il valore 1
, si può solo fare:
var obj = Immutable.Map({categories: {1: 'a', 2: 'b'}});
var output = obj.getIn(["categories"])[1];
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>
Se si desidera che la raccolta categories
di essere anche una mappa, si dovrà definire che in modo esplicito. Inoltre, come ha sottolineato Amit, dovrai utilizzare le stringhe con la funzione getIn()
.
var obj = Immutable.Map({
\t categories: Immutable.Map({
\t \t 1: 'a',
\t \t 2: 'b'
\t })
});
var output = obj.getIn(['categories', '1']);
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>
Il codice di cui sopra tornerà 'a'
.
Probabilmente sarebbe più conveniente per voi fare qualcosa come sotto, se avete molte mappe annidate.
var obj = Immutable.fromJS({
\t categories: {
\t \t 1: 'a',
\t \t 2: 'b'
\t }
});
var output = obj.getIn(['categories', '1']);
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>
La funzione fromJs()
convertirà oggetti nidificati in mappe o elenchi automaticamente per voi.
Grazie per questa domanda, perché i documenti sono apparentemente scomparsi per 'getIn'? Il metodo è stato deprecato? –
Siamo spiacenti, apparentemente è ereditato: https://facebook.github.io/immutable-js/docs/#/Iterable/getIn –