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("名前")); // true
false
未定義
> console.log(map.get("name")); // "ニコラス"
undefined
undefined
> console.log(map.has("title")); // true
false
未定義
> console.log(map.get("title")); // "作成者"
undefined
undefined
> console.log(map.size()); // 2
TypeError: オブジェクト # 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' ]

残念ながら、マップ内の要素を反復処理する方法はないようです。

于 2015-11-16T00:35:41.663 に答える