MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

indexOf() メソッドは、呼び出す String オブジェクト中で、fromIndex から検索を始め、指定された値が最初に現れたインデックスを返します。値が見つからない場合は -1 を返します。

構文

str.indexOf(searchValue[, fromIndex])

引数

searchValue
検索する値を表す文字列。
fromIndex Optional
呼び出す文字列内の検索を始めるための位置。整数を指定できる。デフォルトの値は 0fromIndex <= 0 の場合、文字列全体が検索される。fromIndex >= str.length の場合、 文字列は検索されず -1 を返す。searchValue が空文字でない限り、str.length が返される。

戻り値

指定した値が初めて出現したインデックス。見つからなかった場合は、-1

詳細

文字列における文字は左から右にインデックス化されます。一番最初の文字のインデックスは 0 で、stringName として呼び出された文字列における一番最後の文字は stringName.length - 1 です。

"Blue Whale".indexOf("Blue");     // 0 を返す
"Blue Whale".indexOf("Blute");    // -1 を返す
"Blue Whale".indexOf("Whale", 0); // 5 を返す
"Blue Whale".indexOf("Whale", 5); // 5 を返す
"Blue Whale".indexOf("");         // 0 を返す
"Blue Whale".indexOf("", 9);      // 9 を返す
"Blue Whale".indexOf("", 10);     // 10 を返す
"Blue Whale".indexOf("", 11);     // 10 を返す

大文字と小文字の区別

indexOf() メソッドは大文字と小文字を区別します。例えば、以下の表現は -1 を返します。

"Blue Whale".indexOf("blue")

出現のチェック

'0' は true と評価されず、'-1' は false と評価されないことに注意してください。それゆえ、特定の文字列がほかの文字列に含まれているかチェックする正確な方法は次のようになります:

'Blue Whale'.indexOf('Blue') !== -1; // true
'Blue Whale'.indexOf('Bloe') !== -1; // false

例: indexOf()lastIndexOf() の使用

以下の例は、 "Brave new world" という文字列において、与えられた値の位置を求めるために、indexOflastIndexOf() を使用しています。

var anyString = 'Brave new world';

console.log('The index of the first w from the beginning is ' + anyString.indexOf('w'));
// 8 を表示

console.log('The index of the last w from the beginning is ' + anyString.lastIndexOf('w'));
// 10 を表示

console.log('The index of "new" from the beginning is ' + anyString.indexOf('new'));
// 6 を表示

console.log('The index of "new" from the end is ' + anyString.lastIndexOf('new'));
// 6 を表示

例: indexOf() と 大文字と小文字の区別

以下の例は 2 つの文字列の変数を定義しています。それらの変数は、2 番目の文字列が大文字を含んでいることを除けば、同じ文字列を含んでいます。1 番目の console.log() メソッドは 19 を表示します。 しかし、indexOf メソッドは大文字と小文字を区別するので、"cheddar" という文字列は myCapString では見つけられません。ですから、console.log() メソッドは -1 を表示します。

var myString    = 'brie, pepper jack, cheddar';
var myCapString = 'Brie, Pepper Jack, Cheddar';

console.log('myString.indexOf("cheddar") is ' + myString.indexOf('cheddar'));
// 19 を表示
console.log('myCapString.indexOf("cheddar") is ' + myCapString.indexOf('cheddar'));
// -1 を表示

例: ある文字列中で、ある 1 つの文字が出現する回数を数えるための indexOf() の使用

以下の例は、count に、str という文字列中で e という文字が出現する回数を設定します。

var str = 'To be, or not to be, that is the question.';
var count = 0;
var pos = str.indexOf('e');

while (pos !== -1) {
  count++;
  pos = str.indexOf('e', pos + 1);
}

console.log(count); // 4 を表示

仕様

仕様 ステータス コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。
ECMAScript 5.1 (ECMA-262)
String.prototype.indexOf の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.indexOf の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
String.prototype.indexOf の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, teoli, ethertank, Potappo, Mgjbot
 最終更新者: YuichiNukiyama,