Une carte est simplement une collection de clés avec des valeurs. Ce que vous avez est une carte avec la clé categories
, et la valeur {1: 'a', 2: 'b'}
. La valeur ne devient pas automatiquement une carte Immutable simplement parce que vous la placez dans une autre carte. Maintenant, la fonction getIn()
va "voir" d'autres cartes Immutable.js. Ce que vous avez dedans est un objet ol 'javascript régulier. Si vous voulez juste pour obtenir la valeur 1
, vous pouvez juste faire:
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>
Si vous voulez que la collection categories
être aussi une carte, vous devrez définir explicitement. En outre, comme Amit l'a souligné, vous devrez utiliser des chaînes avec la fonction 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>
Le code ci-dessus retournera 'a'
.
Il serait probablement plus pratique pour vous de faire quelque chose comme ci-dessous, si vous avez beaucoup de cartes imbriquées.
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 fonction fromJs()
convertit tous les objets imbriqués dans des cartes ou des listes automatiquement pour vous.
Merci pour cette question, pourquoi les docs ont apparemment disparu pour 'getIn'? La méthode a-t-elle été dépréciée? –
Désolé, apparemment c'est hérité: https://facebook.github.io/immutable-js/docs/#/Iterable/getIn –