我在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
。
这怎么可能?
答案 0 :(得分:2)
List
的原因
map
调度到第二个参数的
map
方法(如果存在)。
您案例中的第二个参数是List
。是的,List
有一个map
方法,可以在Immutable documentation中找到:
map
返回一个新的
List
,其值通过映射器函数传递。
这就解释了为什么你得到List
。