immutable.js 从 map/hash 获取密钥
immutable.js get keys from map/hash
我想从以下不可变映射中检索 keys():
var map = Immutable.fromJS({"firstKey": null, "secondKey": null });
console.log(JSON.stringify(map.keys()));
我希望输出:
["firstKey", "secondKey"]
然而这输出:
{"_type":0,"_stack":{"node":{"ownerID":{},"entries":[["firstKey",null],["secondKey",null]]},"index":0}}
如何正确操作?
JSFiddle link: https://jsfiddle.net/o04btr3j/57/
这是 ImmutableJS 对象的样子。
如果你想获得:
["firstKey", "secondKey"]
您需要做的:
console.log(map.keySeq().toArray())
虽然这个问题不久前得到了回答,这里有一点更新:
ES6解决方案:
const [ ...keys ] = map.keys();
ES6 之前的解决方案:
var keys = map.keySeq().toArray();
可能只是回答我自己的问题,但我发现 mapKeys()
可以让您在常规循环中访问密钥。好像有点多"the right way"。 (文档太模糊了,谁知道呢!)
例如:
Map({ a: 1, b: 2 }).mapKeys((key, value) => console.log(key, value))
// a 1
// b 2
Immutable.js 的最佳实践是使用不可变数据结构并尽量减少到 JavaScript 类型的转换。对于这个问题,我们可以对这些值使用 keySeq(), which returns a new Seq.Indexed
(an ordered indexed list of values) of the keys of this Map. We then can then set a List 并将该列表分配给一个变量以备后用。以下是如何实施此解决方案的示例:
import { Map, List } from 'immutable';
const exampleMap = Map({ a: 10, b: 20, c: 30 });
const keys = List(exampleMap.keySeq()); // List [ "a", "b", "c" ]
我想从以下不可变映射中检索 keys():
var map = Immutable.fromJS({"firstKey": null, "secondKey": null });
console.log(JSON.stringify(map.keys()));
我希望输出:
["firstKey", "secondKey"]
然而这输出:
{"_type":0,"_stack":{"node":{"ownerID":{},"entries":[["firstKey",null],["secondKey",null]]},"index":0}}
如何正确操作?
JSFiddle link: https://jsfiddle.net/o04btr3j/57/
这是 ImmutableJS 对象的样子。
如果你想获得:
["firstKey", "secondKey"]
您需要做的:
console.log(map.keySeq().toArray())
虽然这个问题不久前得到了回答,这里有一点更新:
ES6解决方案:
const [ ...keys ] = map.keys();
ES6 之前的解决方案:
var keys = map.keySeq().toArray();
可能只是回答我自己的问题,但我发现 mapKeys()
可以让您在常规循环中访问密钥。好像有点多"the right way"。 (文档太模糊了,谁知道呢!)
例如:
Map({ a: 1, b: 2 }).mapKeys((key, value) => console.log(key, value))
// a 1
// b 2
Immutable.js 的最佳实践是使用不可变数据结构并尽量减少到 JavaScript 类型的转换。对于这个问题,我们可以对这些值使用 keySeq(), which returns a new Seq.Indexed
(an ordered indexed list of values) of the keys of this Map. We then can then set a List 并将该列表分配给一个变量以备后用。以下是如何实施此解决方案的示例:
import { Map, List } from 'immutable';
const exampleMap = Map({ a: 10, b: 20, c: 30 });
const keys = List(exampleMap.keySeq()); // List [ "a", "b", "c" ]