String.prototype.lastIndexOf()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

lastIndexOf()String 値のメソッドで、この文字列を検索し、指定した部分文字列が最後に出現するインデックスを返します。オプションで開始位置を取り、指定した数値以下のインデックスにおいて、指定した部分文字列が最後にに出現するインデックスを返します。

試してみましょう

const paragraph = "I think Ruth's dog is cuter than your dog!";

const searchTerm = "dog";

console.log(
  `Index of the last ${searchTerm} is ${paragraph.lastIndexOf(searchTerm)}`,
);
// Expected output: "Index of the last "dog" is 38"

構文

js
lastIndexOf(searchString)
lastIndexOf(searchString, position)

引数

searchString

検索する値を表す文字列です。すべての値は文字列に変換されますので、省略したり undefined を渡したりすると、lastIndexOf()"undefined" という文字列を検索します。これはおそらく望むところではないでしょう。

position 省略可

このメソッドは、position(既定値は +Infinity)以下の位置で、指定した部分文字列が最後に現れるインデックスを返します。position が呼び出された文字列の長さよりも大きい場合、このメソッドは呼び出される文字列全体を検索します。position0 未満の場合、このメソッドは 0 の場合と同じように動作します。すなわち、このメソッドは指定された文字列をインデックス 0 でのみ検索します。

  • 'hello world hello'.lastIndexOf('world', 4)-1 を返します。部分文字列 world が現れるのは 6 のインデックスですが、その位置は 4 以下ではないからです。

  • 'hello world hello'.lastIndexOf('hello', 99)12 を返します。部分文字列 hello が最後に現れる位置が、99 以下である 12 の位置だからです。

  • 'hello world hello'.lastIndexOf('hello', 0)'hello world hello'.lastIndexOf('hello', -5) はどちらも 0 を返します。hello をインデックス 0 でしか検索しないからです。

返値

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

解説

文字列は 0 基点です。文字列の最初の文字のインデックスは 0 で、文字列の最後の文字のインデックスは文字列の長さから 1 を引いたものになります。

js
"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 を返す

大文字小文字の区別

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

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

indexOf() と lastIndexOf() の使用

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

js
const anyString = "Brave, Brave New World";

console.log(anyString.indexOf("Brave")); // 0
console.log(anyString.lastIndexOf("Brave")); // 7

仕様書

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
lastIndexOf

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報