Node 4.0 を使用しており、今のところその機能がとても気に入っているので、コードを ES6 に更新しようとしています。ただし、新しい ES6 Map
データ構造では、Array
をキーとして使用すると {}
とは異なる動作をするため、問題があります。カウンターマップとして使ってます。
このコードを実行するのですが、配列を Map
のキーとして使用する方法を知りたいと思っています。
次のように出力されます。最初の行は unknown
: ではなく
1
元の JS マップはキーを文字列化しますが、新しい ES6 Map
で同じタイプの文字列化ハックを実行したくありません。
ES6 Map
で配列をキーとして確実に使用するにはどうすればよいですか?
キーとして使用される
Array
の非プリミティブ インスタンスへの参照を保存する必要があります。次の 2 つの例の違いに注意してください:ES2015 マップ キーの比較を理解することは、
###これを試して:### リーリー===
演算子を使用することと (ほぼ) 似ています。 2 つの配列インスタンスは、同じ値が含まれている場合でも、===
形式で相互に比較されません。Map クラスは基本クラスとして使用することを目的としているため、オーバーライドされた
.get()関数を使用してサブクラスを実装できる場合があります。
(最初の文の「ほぼ」は、Map キーの等価性比較が
Object.is()を通じて行われることを反映しています。これは日常のコーディングではほとんど発生しません。本質的に、JavaScript における等価性
3 番目
バリアントをテスト済み。)