str*_*gee 1 javascript dictionary node.js 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
Run Code Online (Sandbox Code Playgroud)
如您所见,foo和bar键在 中明确定义map,但是当我尝试使用 迭代它们时Map.prototype.forEach,没有任何反应 - 但根据 MDN,它应该. 还要注意,这Map.prototype.forEach 是定义的,所以不仅仅是这个方法还没有实现。我也尝试过使用for ... of ...循环,结果相同 - 我提供的每次迭代运行的代码实际上并没有运行,即使它应该.
我在 Node.js v4.4.4 上。我在网上搜索了“javascript 地图不是可迭代节点”等内容,但没有成功。
这里发生了什么?
不是100%肯定的,但我认为你需要使用map.set用Maps。
var map = new Map();
map.set('foo', 'bar');
map.set('bar', 'baz');
map.forEach(console.log);
Run Code Online (Sandbox Code Playgroud)
这将注销您正在查找的每个项目。因为Map.prototype.forEach正在寻找可迭代的属性,所以需要使用该set()函数来设置那些可迭代的属性。