У меня есть такая упорядоченная карта:
{
"200": { id: 200, name: "John" },
"120": { id: 120, name: "Mike" },
"350": { id: 350, name: "James" }
}
Как получить все упорядоченные значения без метода toJS?
Я пробовал:
map.valueSeq().toArray(), Array.from(map.values())
но он возвращает intermixed array
.
Вы можете сделать toList()
чтобы получить все values
(ei not the keys
) карты в неизменяемой структуре List
вы можете впоследствии обработать, или сделать List(yourMap)
если вы хотите, чтобы key
и value
представляли собой сортировку массива сортировки, В документах:
Это похоже на List (collection), но предоставляется для приведения в соответствие цепочек. Однако при вызове Map или других коллекций с ключами collection.toList() отбрасывает ключи и создает список только значений, тогда как List (collection) создает список входных кортежей.
const { Map, List } = require('immutable') var myMap = Map({ a: 'Apple', b: 'Banana' }) List(myMap)//List [ [ "a", "Apple" ], [ "b", "Banana" ] ] myMap.toList()//List [ "Apple", "Banana" ]
Javascript будет сортировать ключи исходного object
если они являются числовыми или обрабатываемыми как числовые, поэтому вы можете сделать следующее обходное решение:
const PeopleMap = new OrderedMap([
["200", { id: 200, name: "John" }],
["120", { id: 120, name: "Mike" }],
["350", { id: 350, name: "James" }]
]);
Вот рабочий пример: https://jsfiddle.net/8kbcyfsn/
Объявив его как массив пар ключей значений, упорядоченная карта регистрирует правильный порядок.
Если вы объявляете его как объект,
const PeopleMap = new OrderedMap({
"200": { id: 200, name: "John" },
"120": { id: 120, name: "Mike" },
"350", { id: 350, name: "James"}
});
Он попытается заказать его по значению Number(key)
.
Я не уверен, правильно ли понял ваш вопрос, но если бы я это сделал, вы могли бы попробовать:
Object.keys(obj).map(key => obj[key]);