1

似乎 Nodejs 0.10.20 中的 Map 已损坏。我用 --harmony (包括 --harmony_collections 标志)启动它。
如需参考,请查看http://dailyjs.com/2012/10/15/preparing-for-esnext/
下面的示例在 Firefox 20.0 中运行。

在 Nodejs 控制台中,我执行以下操作

> var map = new Map([ ["name", "Nicholas"], ["title", "Author"]]);
未定义
> 地图
{}

所以构造函数初始化似乎不起作用。然后我按照 Firefox 示例进行操作,但它们大多不起作用:

> console.log(map.has("name")); // true
false
undefined
> console.log(map.get("name")); // "尼古拉斯"
undefined
undefined
> console.log(map.has("title")); // true
false
undefined
> console.log(map.get("title")); // “作者”
undefined
undefined
> console.log(map.size()); // 2
TypeError: Object # has no method 'size'
at repl:1:17
at REPLServer.self.eval (repl.js:110:21)
at repl.js:249:20
at REPLServer.self.eval (repl .js:122:7)
在接口。(repl.js:239:12)
在接口。
在 Interface._onLine (readline.js:202:10)
在 Interface._line (readline.js:531:8)
在 Interface._ttyWrite (readline.js:760:14)
在 ReadStream.onkeypress (readline.js:99: 10)

我很困惑这些基本的 Map 方法不起作用。我有 Nodejs 版本 0.10.20

4

2 回答 2

2

这是工作。我在节点 v0.10.13 上对其进行了测试

var map = new Map();
map.set("name", "Nicholas");
map.set("title", "Author");

> map.has("name");
true
> map.get("name");
'Nicholas'
> map.has("title");
true
> map.get("title");
'Author'

您正在尝试的是特定于 Mozilla 的。它没有在 V8 中实现。在您尝试过size的和使用构造函数的数组初始化中,V8 中没有。我无法在 V8 中找到 es-harmony 实现的良好文档,这使得它很难使用。而且它还不是一个标准,所以实现会有所不同。

于 2013-10-16T05:05:54.030 回答
0

具体来说,node.js v0.10.25 Map 似乎支持以下方法:

> console.log(Object.getOwnPropertyNames(Map.prototype))
[ 'constructor', 'get', 'set', 'has', 'delete' ]

非常不幸的是,似乎没有任何方法可以遍历 Map 中的元素。

于 2015-11-16T00:35:41.663 回答