JavaScript

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

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

先輩くん

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

JavaScriptの学習におすすめ参考書
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

本書情報
出版社技術評論社
著者山田 祥寛
発売日2023/2/13
ページ数624ページ
レビュー
(Amazon)
(4件)
先輩くん
先輩くん
10万部突破したJavaScriptの本が大幅増補改訂し7年ぶりに発売されたよ!
後輩ちゃん
後輩ちゃん
最新の基本文法から、開発に欠かせない応用トピックまで学ぶことが出来るよ!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

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アクセスランキング にほんブログ村