Я создал список карт в 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
, но не Array
JS.
List [ 0, 1 ]
Я понимаю, что мы можем перебирать любую структуру данных, если она определена как Symbol.iterator
. Но возвращаемый тип также является List
.
Как это возможно?
Причина, по которой вы получаете List
, объясняется в документации Ramda:
map
Отправляет метод
map
второго аргумента, если он присутствует.
Второй аргумент в вашем случае - это List
. И да, в List
есть метод map
, который содержится в документации, не подлежащей исключению:
map
Возвращает новый
List
со значениями, переданными через функцию сопоставления.
Таким образом, это объясняет, почему вы получаете List
.