我们无法通过Map.prototype.keys()迭代forEach()的技术原因

时间:2017-07-05 18:34:27

标签: javascript node.js dictionary

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

let m = new Map()

我不能像这样迭代它的键:

m.keys().forEach()

为什么会这样?

我可以迭代它的键值对,如下所示:

m.forEach((v,k) => {})

这是什么原因?

1 个答案:

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