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

JavaScriptのMap.forEach()関数の使い方をわかりやすく解説

MapオブジェクトのforEach()メソッドは、マップに格納されているすべてのキーと値のペア(エントリ)に対して、指定したコールバック関数を登録順(挿入順)に1回ずつ実行するためのメソッドです。これを利用することで、マップ内のデータを簡単に取り出して処理できます。なお、forEach()メソッド自体は何も返しません(undefinedを返します)。

構文

forEach()メソッドの基本的な構文は以下のとおりです。

mapVar.forEach(callbackFn[, thisArg])

パラメータ

  • callbackFn:各要素に対して実行されるコールバック関数。次の3つの引数を受け取ります。
    • value:現在処理中の要素の値
    • key:現在処理中の要素のキー
    • map:処理対象となるMapオブジェクト本体
  • thisArg(省略可能):コールバック関数を実行する際に、内部でthisとして参照される値。

注意:配列のforEach()とは異なり、MapのforEach()ではコールバック関数の第1引数が「値(value)」、第2引数が「キー(key)」となります。引数の順序に注意しましょう。

使用例

以下の例では、Mapオブジェクトに4つのエントリを登録し、forEach()メソッドでそれぞれの値を順番に表示しています。

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var mapVar = new Map();
      mapVar.set('1', 'Java');
      mapVar.set('2', 'JavaFX');
      mapVar.set('3', 'HBase');
      mapVar.set('4', 'Neo4j');
      
      function show(values) {
         document.write(values);
         document.write("<br>");
      }
      mapVar.forEach(show);
   </script>
</body>
</html>

出力結果

Java
JavaFX
HBase
Neo4j

モダンな書き方:アロー関数との組み合わせ

近年のJavaScriptでは、コールバック関数をアロー関数で記述するのが一般的です。また、document.write()の代わりにconsole.log()を使うことで、より実用的なコードになります。

const mapVar = new Map([
  ['1', 'Java'],
  ['2', 'JavaFX'],
  ['3', 'HBase'],
  ['4', 'Neo4j']
]);

mapVar.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

// 出力:
// 1: Java
// 2: JavaFX
// 3: HBase
// 4: Neo4j

このように、MapのforEach()メソッドを使えば、キーと値の両方を簡単に受け取って処理できるため、マップの内容を一覧表示したり、条件に応じた加工を行ったりする際に非常に便利です。

  1. JavaScriptの関数プロトタイプとは?仕組みと使い方を解説

    JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに

  2. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン