如果我像这样创建一个Map实例:
let m = new Map()
我不能像这样迭代它的键:
m.keys().forEach()
为什么会这样?
我可以迭代它的键值对,如下所示:
m.forEach((v,k) => {})
这是什么原因?
答案 0 :(得分:5)
Map.prototype.keys()
会返回Iterator
个对象,而不是Array
,其中没有.forEach()
个函数的原型。
但是,您可以做的是:
let map = new Map();
Array.from(map.keys()).forEach(callback);
这会将Iterator
对象转换为Array
,您可以自由使用.forEach()
方法。或者,您可以使用扩展语法来实现相同的目标:
let map = new Map();
let keys = [ ...myMap.keys() ].forEach(callback);