如何在Immutable.js中读取数组中的值

Kay*_*ote 4 javascript arrays dictionary object immutable.js

我对此有些困惑,似乎无法解决。

说我有这个:

const AnObj = Immutable.Map({
 a : "a",
 b : Immutable.List.of(
  a,
  b,
  c,
  Immutable.Map({
   a : "a"
  })
 )
});
Run Code Online (Sandbox Code Playgroud)

对于不可变地图,我们在其中使用字符串get()来查找相应的属性。我们如何读取数组值?

haz*_*ous 6

免责声明-这适用于所有不可变类型,而不仅限于列表。

几种方法-

  1. 所述get方法- AnObj.get('b').get(3).get('a')(感谢@stas)。当结构不是很深时,这很有用。如您所见,语法非常冗长。

  2. 简洁getIn- AnObj.getIn(['b', 3, 'a']) 我喜欢这个,因为这种模式允许使用通用的getter,而且我可以将密钥路径扔到各个组件上。

  3. 真正的valueSeq / entrySeq,当您需要所有值并且不关心索引时- AnObj.get('b').valueSeq() 当列表很大并且您想要将迭代延迟到绝对需要时,此方法很有用。这是所有人中表现最好的。