Eine Karte ist einfach eine Sammlung von Schlüsseln mit Werten. Was Sie haben, ist eine Karte mit dem Schlüssel categories
, und der Wert {1: 'a', 2: 'b'}
. Der Wert wird nicht automatisch zu einer unveränderlichen Karte, nur weil Sie ihn in eine andere Karte einfügen.
Jetzt wird die getIn()
Funktion nur andere Immutable.js Karten "sehen". Was Sie dort haben, ist ein normales Javascript-Objekt. Wenn Sie nur den 1
Wert erhalten möchten, können Sie einfach tun:
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>
Wenn Sie die categories
Sammlung wollen auch eine Karte sein, Sie werden feststellen, dass explizit definieren. Wie Amit bemerkte, müssen Sie auch Strings mit der getIn()
Funktion verwenden.
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>
Der obige Code wird 'a'
zurück.
Es wäre wahrscheinlich bequemer für Sie, etwas wie unten zu tun, wenn Sie viele verschachtelte Karten haben.
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>
Die fromJs()
Funktion werden alle verschachtelten Objekten in Karten oder Listen automatisch für Sie konvertieren.
Vielen Dank für diese Frage, warum scheinen die Dokumente für 'getIn' verschwunden zu sein? Ist die Methode veraltet? –
Sorry, anscheinend ist es geerbt: https://facebook.github.io/immutable-js/docs/#/Iterable/getIn –