JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでハッシュテーブルから要素を削除する方法

ハッシュテーブルから要素を削除するには、該当するキーを探し出し、配列からその場で要素を取り除ける splice メソッドを呼び出すだけで実現できます。

削除処理は以下の手順で行われます。

  1. hash 関数を使って、キーからハッシュ値(バケットのインデックス)を計算します。
  2. 該当するバケット内のチェーン(連結されたエントリのリスト)を順番に走査します。
  3. 同じキーを持つ要素が見つかったら、splice(i, 1) を呼び出してその位置の要素を1つ削除し、true を返します。
  4. 見つからなかった場合は、何も削除せずに false を返します。

実装例

それでは、実際のコードを見てみましょう。

remove(key) {
   let hashCode = this.hash(key);

   for (let i = 0; i < this.container[hashCode].length; i++) {
      // チェーンの中から該当する要素を探す
      if (this.container[hashCode][i].key === key) {
         this.container[hashCode].splice(i, 1);
         return true
      }
   }
   return false;
}

このメソッドは、削除が成功したかどうかを真偽値(true/false)で返すため、呼び出し側で結果を確認できます。次のように動作をテストしてみましょう。

テストコード

let ht = new HashTable();

ht.put(10, 94); ht.put(20, 72);
ht.put(30, 1);
ht.put(21, 6);
ht.put(15, 21);
ht.put(32, 34);

console.log(ht.get(20));
console.log(ht.remove(20));
console.log(ht.get(20));
console.log(ht.remove(20));

出力結果

上記のコードを実行すると、次のような出力が得られます。

{ key: 20, value: 72 }
true
undefined
false

結果の解説

最初の get(20) の呼び出しでは、キー 20 に対応する値 72 が取得できています。続く remove(20) では要素が見つかり、正常に削除されたため true が返されます。

その後にもう一度 get(20) を呼び出すと、要素はすでに削除されているため undefined が返ります。そして最後の remove(20) では、キー 20 はもう存在しないため、false が返されるという流れです。

このように、削除メソッドが真偽値を返す設計にしておけば、呼び出し元は削除の成否を簡単に判断できるため、実用的なハッシュテーブルを実装する上で重要なポイントになります。

  1. JavaScriptでリンクリストから要素を削除する方法

    リンクリストから要素を削除する基本の考え方 リンクリスト(連結リスト)から要素を削除する処理は非常にシンプルです。削除したいノードへの参照を失う(参照を切り離す)だけで実現できます。ただし、削除する位置によって処理が異なるため、次の3つのケースを考慮する必要があります。 ケース1:先頭(ヘッド)から削除する場合 先頭の要素を削除する場合は、head = head.next と代入するだけでOKです。これにより最初のノードへの参照が失われ、headは2番目のノードを指すようになります。 ケース2:末尾(テール)から削除する場合 末尾の要素を削除する場合は、最後から2番目のノードの node.ne

  2. JavaScriptのハッシュテーブル:データ構造の基礎と実装方法を徹底解説

    ハッシュテーブル(Hash Table)は、データを連想形式で格納するデータ構造です。ハッシュテーブルでは、データは配列形式で保持され、それぞれのデータ値に固有のインデックス値が割り当てられます。目的のデータのインデックスさえ分かれば、データへのアクセスは非常に高速に行えます。そのため、ハッシュテーブルはデータサイズの大小にかかわらず、挿入操作も検索操作も非常に高速に実行できるデータ構造となっています。ハッシュテーブルは配列を記憶領域として利用し、要素を挿入または検索すべきインデックスを生成するために「ハッシュ」という技法を用います。ハッシュ化(Hashing)とはハッシュ化とは、キー値の範囲