如何在没有 toJS 的情况下从 immutable.js orderedmap 获取所有有序值?
How to get all ordered values from immutable.js orderedmap without toJS?
我有这样一个有序的地图:
{
"200": { id: 200, name: "John" },
"120": { id: 120, name: "Mike" },
"350": { id: 350, name: "James" }
}
如何不用toJS方法获取所有有序值?
我试过:
map.valueSeq().toArray(), Array.from(map.values())
但它 returns 一个 intermixed array
。
我不确定我是否正确理解了你的问题,但如果我理解了,你可以试试:
Object.keys(obj).map(key => obj[key]);
您可以toList()
在一个List
不可变结构中获取地图的所有values
(e.i。而不是keys
)稍后可以进一步操作,或者如果您希望 key
和 value
作为各种元组数组,则执行 List(yourMap)
。根据 docs:
This is similar to List(collection), but provided to allow for chained expressions. However, when called on Map or other keyed collections, collection.toList() discards the keys and creates a list of only the values, whereas List(collection) creates a list of entry tuples.
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)
值对其进行排序。
我有这样一个有序的地图:
{
"200": { id: 200, name: "John" },
"120": { id: 120, name: "Mike" },
"350": { id: 350, name: "James" }
}
如何不用toJS方法获取所有有序值?
我试过:
map.valueSeq().toArray(), Array.from(map.values())
但它 returns 一个 intermixed array
。
我不确定我是否正确理解了你的问题,但如果我理解了,你可以试试:
Object.keys(obj).map(key => obj[key]);
您可以toList()
在一个List
不可变结构中获取地图的所有values
(e.i。而不是keys
)稍后可以进一步操作,或者如果您希望 key
和 value
作为各种元组数组,则执行 List(yourMap)
。根据 docs:
This is similar to List(collection), but provided to allow for chained expressions. However, when called on Map or other keyed collections, collection.toList() discards the keys and creates a list of only the values, whereas List(collection) creates a list of entry tuples.
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)
值对其进行排序。