JavaScript で同等の Hashmap
ハッシュマップは、ハッシュテーブルとも呼ばれ、要素がキーと値のペアの形式で格納される要素のコレクションです。当時、JavaScript プログラミング言語で実装されたハッシュマップに使用できる事前定義されたデータ構造はありませんでした。このデータ構造がすでに実装されている C++ や Java のような他のプログラミング言語とは異なります。そのため、人々はハッシュマップを実装するためのさまざまな代替手段を検索し、ほとんどの場合、キー値の構造も持っているため、オブジェクトを使用するために使用されていました。
JavaScript の ES6 バージョンでは、JavaScript コミュニティは、キーと値のペアである Map
オブジェクトと呼ばれるハッシュマップを実装するための新しいデータ構造を導入しています。Map
オブジェクトを使用してハッシュマップを実装し、いくつかの事前定義されたメソッドを使用して挿入、削除、更新などのさまざまな操作を実行する方法を見てみましょう。
JavaScript で Map
オブジェクトを使用してハッシュマップを実装する
すでに見てきたように、Map
オブジェクトはキーと値のペアです。最初は、マップは空になります。その中に要素はありません。ハッシュマップのキーは string 型または symbol 型のいずれかであり、ハッシュマップの値は任意の型にすることができます。
Map
を作成するには、そのオブジェクトを作成して、変数(この場合は hashmap
)内に格納します。ハッシュマップ内にキーと値のペアを挿入するために、JavaScript は set()
と呼ばれるメソッドを提供します。このメソッドは 2つのパラメーターを取ります。最初のパラメーターはキーで、2 番目のパラメーターは値です。作成した hashmap
内に 4つの要素を挿入します。各要素には、整数、配列、文字列、関数全体など、異なるタイプの値が含まれます。以下は同じことを示すコードです。
var hashmap = new Map();
hashmap.set('1', 700);
hashmap.set('2', [1, 2, 3]);
hashmap.set('3', 'This is a string');
hashmap.set('4', () => {console.log('Hello World')});
console.log(hashmap);
上記のコードを実行すると、コンソールでは次のようになります。
ご覧のとおり、関数全体を値としてハッシュマップに含めるなど、さまざまなデータ型を挿入しています。
ハッシュマップを作成しました。ハッシュマップ内に存在するすべての値を出力してみましょう。これは、forEach
ループを使用して実行できます。
hashmap.forEach(element => {
document.write('<br>' + element);
});
この出力は、document.write()
メソッドを使用してコンソール内ではなく、画面に直接表示されます。
次に、キー3
がハッシュマップ内に存在するかどうか、または has()
メソッドを使用していないかどうかを確認しましょう。キーがハッシュマップ内に存在する場合、set()
メソッドを使用してキー3
の既存の値を変更または置換します。
if (hashmap.has('3')) {
hashmap.set('3', 'We changed the value...')
}
console.log(hashmap);
出力:
最後に、ハッシュマップから要素を削除するには、delete()
メソッドを使用して、削除する適切なキーを渡すことができます。また、ハッシュマップからすべての要素を一度に削除して空にしたい場合は、次のように clear()
メソッドを使用できます。
// deletes 4th element
hashmap.delete('4');
console.log(hashmap);
// clears entire hashmap
hashmap.clear();
console.log(hashmap);
以下は、上記のコードの出力です。
これは、JavaScript でハッシュマップを作成するのと同等の正しい方法です。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn