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

How To Read Values Within Arrays In Immutable.js

我对此有点困惑,似乎无法解决这个问题。

假设我有这个:

const AnObj = Immutable.Map({
 a : "a",
 b : Immutable.List.of(
  a,
  b,
  c,
  Immutable.Map({
   a : "a"
  })
 )
});

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

您可以将基于零的数字索引传递给 List.get():

AnObj.get('b').get(3).get('a')

参见https://facebook.github.io/immutable-js/docs/#/List/get

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

几种方式-

  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() 当列表很大并且您想延迟迭代直到绝对需要时,这很有用。这是其中性能最高的。