javascript - 为什么我不能迭代我的 ES6 Map 的属性?

标签 javascript node.js dictionary ecmascript-6

在 Node.js REPL 中:

> var map = new Map();
undefined
> map['foo'] = 'bar';
'bar'
> map['bar'] = 'baz';
'baz'
> map
Map { foo: 'bar', bar: 'baz' }
> map.forEach(console.log);
undefined

如您所见,foobar 键在 map 中明确定义,但是当我尝试使用 Map.prototype.forEach,没有任何反应 - 但是 according to MDN, it should .另请注意,Map.prototype.forEach 已定义,因此不仅仅是此方法尚未实现。我也尝试过使用 for ... of ... 循环,结果相同 - 我为每次迭代提供的代码实际上并没有运行,即使 it should .

我使用的是 Node.js v4.4.4。我在网上搜索了“javascript map isn't iterable node”之类的东西,但没有找到。

这是怎么回事?

最佳答案

不是 100% 肯定,但我认为您需要将 map.setMaps 一起使用。

var map = new Map();
map.set('foo', 'bar');
map.set('bar', 'baz');
map.forEach(console.log);

这将注销您要查找的每个项目。因为 Map.prototype.forEach 正在寻找可迭代的属性,所以您需要使用 set() 函数来设置这些可迭代的属性。

关于javascript - 为什么我不能迭代我的 ES6 Map 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39631407/

相关文章:

javascript - android 2.x - 4.3.x phonegap 不支持 flexbox css3

javascript - 将多个相似的函数附加到原型(prototype)

python - 移动字典值并交换它们,但不是随机的

C++ std::map 键排序比较函数?

javascript - 在 JavaScript 中缓冲/同步多个音频流

javascript - 在 app.locals 上设置属性和调用 app.set() 有什么区别?

javascript - 如何为 HTML Audio 元素添加点击/鼠标按下事件

javascript - AngularJS 无法从 NodeJS 服务器读取响应 HTTP header

javascript - 在 Nodejs 中解码相同的 base64 字符串会产生不同的结果

java - 如何从另一个带有值的类调用的另一个类获取函数的结果