为什么javascript的ES6 / Harmony Set对象为keys / values / entries方法返回空对象?
我正在尝试在节点4.1.2中的新Set
对象,我看到values
, keys
和entries
方法都始终返回空对象。 例如:
var x = new Set x.add(1) x.add(2) x.values() // returns {}
这是预期的行为? 我无法想象它是。
ES6增加了一些新的技巧,包括迭代协议。 您可能需要查看MDN上的迭代协议 ,以更紧密地掌握如何使用它们。 for(item in array)
仍然在,但你可以使用新for ... of
某些事情。
考虑到你的代码:
var x = new Set x.add(1) x.add(2) x.values()
让我们说,在哪里var y = x.values();
, y
是一个迭代器;
为了遍历所说的迭代器,你可以使用for(let item of iterable){}
循环。 在这种情况下,您将使用:
for(let z of x){ console.log(z); }
哪个会打印出来:
1 2
值在那里,只是util.inspect()
没有显示出来。 这个问题已经在v4.1.2之后的88533881d版本中解决了。 所以,只要v4.1.3发布,你就会看到修复。