【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

【JavaScript】indexOfとlastIndexOfの使い方と違いについて

本記事では、文字列の中に特定の文字列が含まれているか確認する時などに使用されるindexOfメソッドとlastIndexOfメソッドの使い方と違いについて、サンプルコードを用いて解説しています。

先輩くん

indexOfメソッドを使用した特定の文字列を判定する方法については、別記事にて紹介しているので興味のある方はご参照ください!

JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
総合評価
( 5 )
メリット
  • 誰でも分かるように嚙み砕いて説明してくれる
  • アニメーションの知識が深く学べる
  • 1つのWebサイトを作りながら学べる
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次

indexOfとlastIndexOfの使い方と違い

indexOfメソッドとlastIndexOfメソッドの使い方は以下のとおりです。

String.indexOf(searchString [,number]);
String.lastIndexOf(searchString [,number]);
基本構文
  • String:対象の文字列
  • searchString:検索したい文字列
  • number:検索開始位置を数値で指定(省略可能)

searchStringを空文字にした場合は、numberに指定した値を返します。numberに負の値をセットした場合は、内部的に0がセットされます。

基本構文の説明を見て分かる通り、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)を省略した時と同じ、つまり末尾から文字列の検索をします。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次