本記事では、文字列の中に特定の文字列が含まれているか確認する時などに使用されるindexOfメソッドとlastIndexOfメソッドの使い方と違いについて、サンプルコードを用いて解説しています。
indexOfメソッドを使用した特定の文字列を判定する方法については、別記事にて紹介しているので興味のある方はご参照ください!
- 誰でも分かるように嚙み砕いて説明してくれる
- アニメーションの知識が深く学べる
- 1つのWebサイトを作りながら学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
indexOfとlastIndexOfの使い方と違い
indexOfメソッドとlastIndexOfメソッドの使い方は以下のとおりです。
String.indexOf(searchString [,number]);
String.lastIndexOf(searchString [,number]);
- String:対象の文字列
- searchString:検索したい文字列
- number:検索開始位置を数値で指定(省略可能)
基本構文の説明を見て分かる通り、indexOfメソッドとlastIndexOfメソッドの使い方は全く同じです。
大きく異なる点は、indexOfメソッドは第一引数に指定した文字列を先頭から検索し、lastIndexOfメソッドは末尾から検索します。実際に下記のサンプルコードで確認してみましょう。
let str = "国語熟語述語主語";
console.log(str.indexOf("語")); // => 1
console.log(str.lastIndexOf("語")); // => 7
検索したい文字は「語」です。
indexOfメソッドは、先頭から文字を検索するため2文字目に同じ「語」を見つけます。対象の文字列(String)は、配列のように1文字目を0番目と認識するため2文字目に見つけた場合1を返します。
lastIndexOfメソッドは、末尾から文字を検索するため8文字目に同じ「語」を見つけます。indexOfメソッドと同様に1文字目を0番目と認識するため7を返します。
indexOfとlastIndexOfの細かな挙動の違い
検索開始位置(number)に文字数以上の値を指定
検索開始位置(number)に文字数以上の値を指定した時、indexOfメソッドとlastIndexOfメソッドは異なる挙動をします。実際に下記のサンプルコードで確認してみましょう。
let str = "国語熟語述語主語";
console.log(str.indexOf("語", 10)); // => -1
console.log(str.lastIndexOf("語", 10)); // => 7
indexOfメソッドは、文字列の末尾が検索開始位置になるので-1を返します。しかし、lastIndexOfメソッドは検索開始位置(number)を省略した時と同じ、つまり末尾から文字列の検索をします。