如何将Map键转换为数组?

2020/10/08 20:20 · javascript ·  · 0评论

可以说我有以下地图:

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(key);
console.log(keys);

必须有更好的方法,不是吗?

Map.keys()返回MapIterator可被转化到目的Array使用Array.from

let keys = Array.from( myMap.keys() );
// ["a", "b"]

编辑:您还可以使用扩展语法将可迭代对象转换为数组

let keys =[ ...myMap.keys() ];
// ["a", "b"]

您可以使用传播运算符在Array中转换Map.keys()迭代器。

let myMap = new Map().set('a', 1).set('b', 2).set(983, true)
let keys = [...myMap.keys()]
console.log(keys)

Array.from(myMap.keys()) 在Google应用程序脚本中不起作用。

尝试使用它会导致错误TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }

要获取GAS中的键列表,请执行以下操作:

var keysList = Object.keys(myMap);

我需要类似角反应形式的东西:

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');

并非完全是问题的最佳答案,但是new Array(...someMap)当我需要键和值来生成所需数组时,此技巧为我节省了很多时间。例如,当需要基于键和值从Map对象创建反应组件时。

  let map = new Map();
  map.set("1", 1);
  map.set("2", 2);
  console.log(new Array(...map).map(pairs => pairs[0])); -> ["1", "2"]

好的,让我们更全面一些,从不知道JavaScript中此功能的用户开始使用Map。...MDN说:

Map对象保存键值对,并记住键的原始插入顺序。

任何值(对象值和原始值)都可以用作键或值。

如前所述,您可以使用new关键字轻松创建Map实例。

let myMap = new Map().set('a', 1).set('b', 2);

让我们来看看...

您提到的方式可以做到这一点,但是是的,还有更简洁的方式...

Map有许多可以使用的方法,例如set()已经用于分配键值的方法...

其中之一是keys()返回所有键...

就您而言,它将返回:

MapIterator {"a", "b"}

并且您可以使用ES6方式轻松地将它们转换为数组,例如散布运算符...

const b = [...myMap.keys()];
myMap.map(([x,_]) => {x});

以上应该也可以

本文地址:http://javascript.askforanswer.com/ruhejiangmapjianzhuanhuanweishuzu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!