String.prototype.lastIndexOf() - JavaScript | MDN (original) (raw)
Baseline
Widely available
The lastIndexOf()
method of String values searches this string and returns the index of the last occurrence of the specified substring. It takes an optional starting position and returns the last occurrence of the specified substring at an index less than or equal to the specified number.
Try it
const paragraph = "I think Ruth's dog is cuter than your dog!";
const searchTerm = "dog";
console.log(
`Index of the last <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>s</mi><mi>e</mi><mi>a</mi><mi>r</mi><mi>c</mi><mi>h</mi><mi>T</mi><mi>e</mi><mi>r</mi><mi>m</mi></mrow><mi>i</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">{searchTerm} is </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord"><span class="mord mathnormal">se</span><span class="mord mathnormal">a</span><span class="mord mathnormal">rc</span><span class="mord mathnormal">h</span><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="mord mathnormal" style="margin-right:0.02778em;">er</span><span class="mord mathnormal">m</span></span><span class="mord mathnormal">i</span><span class="mord mathnormal">s</span></span></span></span>{paragraph.lastIndexOf(searchTerm)}`,
);
// Expected output: "Index of the last "dog" is 38"
Syntax
lastIndexOf(searchString)
lastIndexOf(searchString, position)
Parameters
Substring to search for. All values are coerced to strings, so omitting it or passing undefined
causes lastIndexOf()
to search for the string "undefined"
, which is rarely what you want.
The method returns the index of the last occurrence of the specified substring at a position less than or equal to position
, which defaults to +Infinity
. If position
is greater than the length of the calling string, the method searches the entire string. If position
is less than 0
, the behavior is the same as for 0
— that is, the method looks for the specified substring only at index 0
.
'hello world hello'.lastIndexOf('world', 4)
returns-1
— because, while the substringworld
does occurs at index6
, that position is not less than or equal to4
.'hello world hello'.lastIndexOf('hello', 99)
returns12
— because the last occurrence ofhello
at a position less than or equal to99
is at position12
.'hello world hello'.lastIndexOf('hello', 0)
and'hello world hello'.lastIndexOf('hello', -5)
both return0
— because both cause the method to only look forhello
at index0
.
Return value
The index of the last occurrence of searchString
found, or -1
if not found.
Description
Strings are zero-indexed: The index of a string's first character is 0
, and the index of a string's last character is the length of the string minus 1.
"canal".lastIndexOf("a"); // returns 3
"canal".lastIndexOf("a", 2); // returns 1
"canal".lastIndexOf("a", 0); // returns -1
"canal".lastIndexOf("x"); // returns -1
"canal".lastIndexOf("c", -5); // returns 0
"canal".lastIndexOf("c", 0); // returns 0
"canal".lastIndexOf(""); // returns 5
"canal".lastIndexOf("", 2); // returns 2
Case-sensitivity
The lastIndexOf()
method is case sensitive. For example, the following expression returns -1
:
"Blue Whale, Killer Whale".lastIndexOf("blue"); // returns -1
Examples
Using indexOf() and lastIndexOf()
The following example uses indexOf() andlastIndexOf()
to locate values in the string"Brave, Brave New World"
.
const anyString = "Brave, Brave New World";
console.log(anyString.indexOf("Brave")); // 0
console.log(anyString.lastIndexOf("Brave")); // 7
Specifications
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string.prototype.lastindexof |