如果我像这样创建一个地图实例:
let m = new Map()
我不能像这样迭代它的键:
m.keys().forEach()
为什么?
我可以像这样迭代它的键值对:
m.forEach((v,k) => {})
这是什么原因呢?
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);