地圖只是具有值的鍵的集合。你所擁有的是一張地圖,鑰匙categories
,值{1: 'a', 2: 'b'}
。該值不會因爲您將其放置在另一個地圖中而自動變爲不可變的地圖。
現在,getIn()
函數將只會「看到」其他Immutable.js映射。你在那裏有一個普通的ol'javascript對象。如果你只是想獲得1
值,你可以做:
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>
如果你想categories
集合也可以是地圖,你必須定義明確。另外,正如Amit指出的那樣,您需要使用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>
上面的代碼將返回'a'
。
如果你有很多嵌套的地圖,你可能會更方便地做下面的事情。
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>
的fromJs()
功能會自動地將嵌套對象轉換爲地圖或列出了你。
感謝您提出這個問題,爲什麼文檔似乎消失了'getIn'?該方法是否被棄用? –
對不起,顯然它是繼承的:https://facebook.github.io/immutable-js/docs/#/Iterable/getIn –