根据这里的文档:https://facebook.github.io/immutable-js/docs/#/Map/getIn https://facebook.github.io/immutable-js/docs/#/Map/getIn
我应该能够通过提供一个数组来获取深层嵌套的值keyPath
争论。这就是我所做的,但是我得到了undefined
作为返回值。
http://jsfiddle.net/srxv4mwu/ http://jsfiddle.net/srxv4mwu/
var obj = Immutable.Map({categories: {1: 'a', 2: 'b'}});
var output = obj.getIn(['categories', 1]);
alert(output);
我究竟做错了什么?
映射只是键和值的集合。你所拥有的是一张带有钥匙的地图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
集合也是一个地图,您必须明确定义它。另外,正如阿米特指出的那样,您需要将字符串与getIn()
功能。
var obj = Immutable.Map({
categories: Immutable.Map({
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>
上面的代码会返回'a'
.
如果您有许多嵌套地图,那么执行如下操作可能会更方便。
var obj = Immutable.fromJS({
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>
The fromJs()
函数会自动将任何嵌套对象转换为地图或列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)