String.prototype.lastIndexOf()

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

試してみましょう

構文

lastIndexOf(searchValue)
lastIndexOf(searchValue, fromIndex)

引数

searchValue

検索する値を表す文字列です。 searchValue が空文字列であった場合は、 fromIndex を返します。

fromIndex 省略可

比較の先頭とみなされる文字列の最後の文字の位置です。既定値は +Infinity です。 fromIndex >= str.length の場合、文字列全体が検索されます。 fromIndex < 0 の場合は、 0 の場合と同じ動作になります。

返値

searchValue が最後に出現した位置です。見つからなかった場合は、 -1 になります。

解説

文字列における文字は左から右にインデックス化されます。一番最初の文字の位置は 0 で、一番最後の文字は str.length - 1 です。

'canal'.lastIndexOf('a');     // 3 を返す
'canal'.lastIndexOf('a', 2);  // 1 を返す
'canal'.lastIndexOf('a', 0);  // -1 を返す
'canal'.lastIndexOf('x');     // -1 を返す
'canal'.lastIndexOf('c', -5); // 0 を返す
'canal'.lastIndexOf('c', 0);  // 0 を返す
'canal'.lastIndexOf('');      // 5 を返す
'canal'.lastIndexOf('', 2);   // 2 を返す

メモ: 'abab'.lastIndexOf('ab', 2)2 を返し、 0 にはなりません。 fromIndex は検索の開始位置を制約するものだからです。

大文字と小文字の区別

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

'Blue Whale, Killer Whale'.lastIndexOf('blue'); // -1 を返す

indexOf() と lastIndexOf() の使用

以下の例は、 indexOf()lastIndexOf() を使用して文字列 "Brave new world" の中の値の位置を示します。

let anyString = 'Brave new world';

console.log('先頭から見て最初に w が出現する位置: ' + anyString.indexOf('w'));
// 8 と出力
console.log('末尾から見て最初に w が出現する位置: ' + anyString.lastIndexOf('w'));
// 10 と出力
console.log('先頭から見た "new" の位置: ' + anyString.indexOf('new'));
// 6 と出力
console.log('末尾から見た "new" の位置: ' + anyString.lastIndexOf('new'));
// 6 と出力

仕様書

Specification
ECMAScript Language Specification
# sec-string.prototype.lastindexof

ブラウザーの互換性

BCD tables only load in the browser

関連情報