javascript - Ramda.map over Immutable.List 如何返回列表而不是数组?

标签 javascript iterator immutable.js ramda.js

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

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

这怎么可能?

最佳答案

Ramda documentation 中解释了您获得 List 的原因:

map

Dispatches to the map method of the second argument, if present.

您的案例中的第二个参数是List。是的,List 有一个 map 方法,如 Immutable documentation 中所见。 :

map

Returns a new List with values passed through a mapper function.

这就解释了为什么您会得到一个 List

关于javascript - Ramda.map over Immutable.List 如何返回列表而不是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372334/

相关文章:

javascript - 将过滤条件应用于 map 的最简洁方法

javascript - Javascript 中哈希的 Rails 哈希

iterator - 如何编写返回对自身的引用的迭代器?

javascript - 如何在 Immutable.js 中设置深度嵌套的值?

javascript - 不可变的 js 从列表映射中创建列表

javascript - 在 iOS 中是否存在用于退出 "select scroller"接口(interface)的 vendor 特定事件?

javascript - !!变量和变量有什​​么区别

C++ 迭代器泛化 - 不同的容器,相同的类型

performance - 生成器函数(产量)比迭代器类(__next__)快得多

javascript - Netflix Falcor 与 Immutable.js 一起工作?