Ramund.map over Immutable.List如何返回List而不是Array?

时间:2017-06-05 15:27:40

标签: javascript iterator immutable.js ramda.js

我在Immutable.js中创建了一个地图列表,如下所示:

List [ 
  Map { "id": 0, "name": "John" }, 
  Map { "id": 1, "name": "Lennon" } 
]

现在,我已经使用Ramda的R.map来映射上面的列表:

R.map(map => map.get('id'))(a)

它会返回一个新的id列表,其类型为Immutable.List,但不是JS Array

List [ 0, 1 ]

据我所知,如果定义了Symbol.iterator,我们可以迭代任何数据结构。但返回的类型也是List

这怎么可能?

1 个答案:

答案 0 :(得分:2)

Ramda documentation

中说明了获得List的原因
  

map

     

调度到第二个参数的map方法(如果存在)。

您案例中的第二个参数是List。是的,List有一个map方法,可以在Immutable documentation中找到:

  

map

     

返回一个新的List,其值通过映射器函数传递。

这就解释了为什么你得到List