Javascript 获取Immutable.js中的嵌套值

Javascript 获取Immutable.js中的嵌套值,javascript,immutable.js,Javascript,Immutable.js,根据这里的文件: 我应该能够通过为keyPath参数提供一个数组来获得深度嵌套的值。这就是我所做的,但是我得到了undefined作为返回值 我做错了什么?映射只是一组带有值的键。您拥有的是一个带有键categories和值{1:a',2:b'}的映射。该值不会因为放置在另一个映射中而自动成为不可变映射 现在,getIn()函数将只“查看”其他Immutable.js映射。这里有一个普通的ol'javascript对象。如果您只想获得1值,可以执行以下操作: var obj=Immutabl

根据这里的文件:

我应该能够通过为
keyPath
参数提供一个数组来获得深度嵌套的值。这就是我所做的,但是我得到了
undefined
作为返回值


我做错了什么?

映射只是一组带有值的键。您拥有的是一个带有键
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];
警报(输出)

您的代码有两个问题:

  • Immutable.Map(…)
    不会遍历参数来创建复杂的不可变。为此,您需要
    不可变的.fromJS(…)
  • 一旦这样做,您需要在
    getIn(…)
    中使用字符串,因此
    ['categories',1']
    而不是
    ['categories',1]

  • 请参阅。

    谢谢您提出这个问题,为什么
    getIn
    的文档似乎消失了?该方法是否已被弃用?抱歉,显然它是继承的:现在代码段可以工作了。不可变库以前没有链接过。“现在,getIn()函数将只“看到”其他Immutable.js映射。这里有一个普通的ol'javascript对象…”我在引用的文档中发布了一个与此相关的问题,似乎表明getIn也支持普通对象?
    var obj = Immutable.Map({categories: {1: 'a', 2: 'b'}});
    var output = obj.getIn(['categories', 1]);
    alert(output);