JavaScriptでハッシュテーブルをループ処理する方法(forEachの実装)
ここでは、ハッシュテーブルに格納されているすべてのキーと値のペアを走査し、それぞれの値に対してコールバック関数を実行できる forEach メソッドを作成します。
実装の考え方はシンプルです。ハッシュテーブル内部のコンテナには、衝突した要素が「チェーン」と呼ばれるリストで格納されています。そのため、コンテナ内の各チェーンを外側のループでたどり、さらに各チェーン内の要素に対して分割代入で key と value を取り出しながらコールバックを呼び出せばよいのです。
forEachメソッドの実装例
forEach(callback) {
// コンテナ内の各チェーンをループ
this.container.forEach(elem => {
// 各チェーン内の各要素(キーと値のペア)に対してコールバックを実行
elem.forEach(({ key, value }) => callback(key, value));
});
}動作確認用のコード
実際にこの forEach メソッドが正しく動作するか、ハッシュテーブルに複数のデータを登録し、すべての値を合計してみましょう。
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); let sum = 0; // すべての値を合計する ht.forEach((k, v) => sum += v) console.log(sum);
実行結果
上記のコードを実行すると、次の出力が得られます。登録されたすべての値(94 + 72 + 1 + 6 + 21 + 34)の合計が正しく計算されていることがわかります。
228
このように forEach メソッドを実装しておくことで、配列と同じ感覚でハッシュテーブルの中身を反復処理できるようになり、集計や検索、デバッグ時の内容確認など、さまざまな場面で活用できます。
-
JavaScriptでオブジェクトを含む「配列の配列」をループ処理する方法
JavaScriptでオブジェクトを含む多次元配列をループするには?JavaScriptでは、オブジェクトを含む配列の配列(入れ子構造の配列)をループ処理する際、forEach()メソッドをネストして使用し、さらにfor...inループで各オブジェクトのプロパティにアクセスするのが一般的な方法です。以下に、具体的な実装例を紹介します。コード例<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device
-
JavaScriptのforループを使って空のオブジェクトにプロパティを設定する方法
JavaScriptでは、for...inループを使うことで、既存のオブジェクトから空のオブジェクトへプロパティを簡単にコピーできます。以下に、forループを使用して空のオブジェクトにプロパティを設定するサンプルコードを紹介します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,