假设我有以下地图:
let myMap = new Map().set('a', 1).set('b', 2);
我想根据以上得到['a', 'b']。我现在的解决方案看起来又长又可怕。
let myMap = new Map()。Set ('a', 1).set('b', 2); Let keys = []; for (let key of myMap) keys.push(关键); console.log(键);
一定有更好的办法,不是吗?
假设我有以下地图:
let myMap = new Map().set('a', 1).set('b', 2);
我想根据以上得到['a', 'b']。我现在的解决方案看起来又长又可怕。
let myMap = new Map()。Set ('a', 1).set('b', 2); Let keys = []; for (let key of myMap) keys.push(关键); console.log(键);
一定有更好的办法,不是吗?
当前回答
旁注:如果你使用的是JavaScript对象而不是映射,你可以使用object .keys(object),它将返回一个键数组。文档:链接
注意,JS对象不同于map,不一定可以互换使用!
其他回答
可以使用展开操作符转换数组中的Map.keys()迭代器。
let myMap = new Map()。Set ('a', 1).set('b', 2).set(983, true) let keys =[…myMap.keys()] console.log(键)
我需要类似角反应形式的东西:
let myMap = new Map().set(0, {status: 'VALID'}).set(1, {status: 'INVALID'});
let mapToArray = Array.from(myMap.values());
let isValid = mapToArray.every(x => x.status === 'VALID');
Map.keys()返回一个MapIterator对象,可以使用Array.from转换为Array:
let keys = Array.from( myMap.keys() );
// ["a", "b"]
编辑:你也可以使用扩展语法将可迭代对象转换为数组
let keys =[ ...myMap.keys() ];
// ["a", "b"]
不是最好的答案,但这个技巧新数组(…someMap)拯救了我几次,当我需要键和值来生成所需的数组。例如,当需要根据键值和值从Map对象创建react组件时。
let map = new Map();
map.set("1", 1);
map.set("2", 2);
console.log(new Array(...map).map(pairs => pairs[0])); -> ["1", "2"]
旁注:如果你使用的是JavaScript对象而不是映射,你可以使用object .keys(object),它将返回一个键数组。文档:链接
注意,JS对象不同于map,不一定可以互换使用!