技术原因,我们不能在 Map.prototype.keys() 上迭代 forEach()



如果我像这样创建一个地图实例:

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

最新更新