JavaScriptでindexOfメソッドを使って文字列を検索する方法【初心者向け】
プログラミング初心者向けに、JavaScriptで【indexOf】を使う方法を解説した記事です。本記事では、indexOfをどんな時に使うのか、書き方の例などを紹介します。実際のサンプルを書きながら解説しているので、参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
JavaScriptをプログラミング初心者向けに紹介した記事です。
今回は、JavaScriptでindexOfを使う方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
また、入門向けのJavaSriptを学習できるサイトも紹介しているので、あわせてご覧ください。
本記事では、テキストエディタのmiを使っていますが、JavaScriptの場合はWebブラウザとテキストエディタがあれば特別な開発環境がなくても開発できます。
目次
そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。
田島メンター!文字列の検索というのは何でしょうか?
文字列の中にある指定した文字の位置を探すことだよ。
どのような書き方があるのですか?
代表的な方法として、indexOfメソッドを使う方法があるよ!
例を見ながら学習していこう。
indexOfの書き方
indexOfを使えば、文字列または配列に特定の値が含まれるか検索できます。
それぞれの基本文法は、以下の通りです。
1.文字列を対象とする場合
文字列.indexOf( 検索したい文字列[, 検索開始位置])
2.配列を対象とする場合
配列.indexOf( 検索したい配列要素[, 検索開始位置])
どちらの場合も同じように、検索対象に続けて.indexOf
と関数を呼び出すことで実行ができます。
indexOfの第1引数には、検索のキーワードとなる値を指定します。
第2引数は基本的には不要ですが、文字列の何文字目から検索したい場合や、配列の何番目の要素から検索したい場合に、そのインデックス番号を指定できます。
次の章からは、実際の使用例を見ながら、indexOfの実装イメージを具体化していきましょう!
indexOfで文字列の検索を行う
まずはindexOfで、「文字列」を検索する場合のサンプルコードを見てみましょう。
const text = "東京都千代田区";
const result = text.indexOf("千代田");
console.log(result); //-> 3
最初に検索したい文字列をtextという名前の変数に格納し、textに対してindexOfを実行しています。
今回の検索キーワードは「千代田」なので、textの中に「千代田」という文字列が含まれるかを検索しています。
そして実行した結果である返り値をresultという変数に代入し、表示しています。
上記のコードでconsole.logを実行すると、数字の3が表示されます。
3が表示される理屈がややわかりづらいので、説明します。
検索対象となる変数textの中で、「千代田」という文字列は4文字目から始まりますね。
プログラミング的には1文字目は0番目として扱うので、最終的に数字の3というのが結果になるという仕組みです。
また、検索をした時にもし対象の文字列が含まれなかった場合は、返り値として数値の-1が返されます。
const text = "東京都千代田区";
const result = text.indexOf("新宿区");
console.log(result); //-> -1
上記の場合、textに新宿区という文字列は含まれないので、結果として-1と表示されました。
indexOfで配列の検索を行う
次に、検索対象が配列の場合ですが、基本的な書き方は同じです。
さっそく、サンプルコードを見てみましょう。
const animals = ['cat', 'dog', 'rabbit'];
const result = animals.indexOf('dog');
console.log(result); //-> 1
文字列の検索と違うところは、結果として返ってくる数字が「配列の何番目の要素であるか」という点です。
サンプルコードの場合、文字列dogは検索対象animalsの2番目の要素、つまりインデックス番号1の要素なので、結果は1が表示されました。
indexOfの実践コード
indexOfは、多くの場合において「検索対象の中の特定の値の位置」を知るためではなく、「検索対象に特定の値が含まれるかどうか」の yes / no クエスチョンのために用いられます。
そこで、indexOfの「検索にヒットしなければ-1を返す」という仕様を、「返り値が-1でなければ検索にヒットしている」と読み替え、条件文として使用します。
const text = "東京都千代田区";
if (text.indexOf("千代田") !== -1) {
console.log("textには千代田という文字列が含まれています");
};
「結果が-1でなければ、検索にヒットしている」という論理を、if文を使って表現しています。
実際の開発においてはindexOfを上記のように使うことが多いため、パターンとして把握しておきましょう。
まとめ
ここまでindexOfの仕様と、実用的なロジックについて解説をしてきました。
要点をまとめると、以下の通りです。
- indexOfは文字列か配列を対象に、特定の文字列 / 配列要素 を含むか検索できるメソッド
- 検索の結果、文字列 / 配列要素が含まれていればそのインデックス番号、含まれていなければ-1を返す
- 実践的には、「結果となる返り値が-1でなければ、文字列 / 配列要素が含まれている」というロジックを使うことが多い
これらの点を踏まえて、文字列 / 配列検索の実装をぜひしてみてくださいね。
今回の記事は以上です。
indexOfは、簡単に文字列や配列を検索できるんですね。
そうだね。例えば住所に都道府県名が含まれるかなど、応用範囲が広いから覚えておくと便利だよ!
分かりました〜。
JavaScriptを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!