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

JavaScriptで再帰処理を使ったindexOf関数を自作し、正しいインデックスを返す方法

JavaScriptのindexOfメソッドに相当する機能は、再帰処理を使って自分で実装することもできます。独自の関数を作成すれば、検索したい値が配列内に存在する場合はそのインデックス番号を返し、見つからなかった場合には -1 を返すという、標準の動作と同じ挙動を実現できます。

実装のポイント

再帰的なindexOfを実装する際の基本的な考え方は次のとおりです。

  • 現在チェックしているインデックスが配列の長さに達したら、値が見つからなかったことを意味するため -1 を返す
  • 現在の位置にある要素が検索値と一致すれば、そのインデックスを返す
  • どちらにも当てはまらない場合は、インデックスを1つ進めて自分自身を再度呼び出す(再帰)

サンプルコード

以下が実際のコード例です −

const indexOf = (arrayValues, v, index = 0) =>
   index >= arrayValues.length
      ? -1
      : arrayValues[index] === v
         ? index
         : indexOf(arrayValues, v, index + 1)
console.log(indexOf(["John", "David", "Bob"], "Adam"))
console.log(indexOf(["Mike", "Adam", "Carol", "Sam"], "Sam"))

この関数では、第3引数の index にデフォルト値として 0 を設定しています。これにより、最初の呼び出し時には配列の先頭から検索が始まり、以降は再帰呼び出しごとにインデックスが1ずつ増えていきます。

プログラムの実行方法

上記のプログラムを実行するには、ターミナルまたはコマンドプロンプトで以下のコマンドを使用します −

node fileName.js.

ここでは、ファイル名を demo321.js として保存したものとします。

実行結果

プログラムを実行すると、以下の出力が得られます −

PS C:\Users\Amit\javascript-code> node demo321.js
-1
3

出力の解説

最初の呼び出しでは、配列 ["John", "David", "Bob"] の中に "Adam" は存在しないため、-1 が返されています。一方、2番目の呼び出しでは、配列 ["Mike", "Adam", "Carol", "Sam"] の中に "Sam" が存在し、その位置は先頭から数えて4番目(インデックスは0始まり)なので、3 という正しいインデックスが返されます。

このように、再帰処理を活用することで、標準の indexOf メソッドと同等の機能を持つ独自の検索関数をシンプルに実装できるのです。

  1. JavaScriptでURLからGETパラメータの値を取得する方法

    JavaScriptでは、URLオブジェクトとsearchParamsプロパティを組み合わせることで、URLに含まれるGETパラメータ(クエリ文字列)の値を簡単に取得できます。本記事では、実際のコード例とともにその手順をわかりやすく解説します。 実装例 以下は、サンプルURL「https://www.google.com?imageSize=440&color=blue」から、imageSizeとcolorという2つのGETパラメータの値を取り出して画面に表示するコード例です。 <!DOCTYPE html> <html lang=ja> <head>

  2. SeleniumでJavaScriptコードの戻り値を取得する方法

    Selenium WebDriverを使用すると、JavaScriptコードの戻り値を取得することができます。SeleniumはexecuteScriptメソッドを利用してJavaScriptコマンドを実行でき、実行したいJavaScriptコマンドはこのメソッドの引数として渡します。 JavaScriptコードから値を返す際にはreturnキーワードを使用します。また、JavaScriptを操作するためには、import org.openqa.selenium.JavascriptExecutorというインポート文を追加する必要がある点にも注意してください。 構文 JavascriptEx