Как Ramda.map поверх Immutable.List возвращает список вместо массива?

1

Я создал список карт в 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.

Как это возможно?

Теги:
iterator
ramda.js
immutable.js

1 ответ

2
Лучший ответ

Причина, по которой вы получаете List, объясняется в документации Ramda:

map

Отправляет метод map второго аргумента, если он присутствует.

Второй аргумент в вашем случае - это List. И да, в List есть метод map, который содержится в документации, не подлежащей исключению:

map

Возвращает новый List со значениями, переданными через функцию сопоставления.

Таким образом, это объясняет, почему вы получаете List.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню