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

How To Read Values Within Arrays In Immutable.js

本文关键字:读取 数组 js Immutable      更新时间:2023-09-26

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

假设我有这个:

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

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

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

几种方法-

  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()当列表很大并且您希望将迭代延迟到绝对需要时,这很有用。这是所有表演中表现最好的。

您可以将从零开始的数字索引传递给List.get():

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

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