String.prototype.lastIndexOf()

lastIndexOf() 方法是 String 值的方法,它搜索此字符串并返回指定子字符串最后一次出现的索引。它接受一个可选的起始位置,并返回在小于或等于指定数字的索引处的指定子字符串的最后一次出现。

试一试

语法

js
lastIndexOf(searchString)
lastIndexOf(searchString, position)

参数

searchString

要搜索的子字符串。所有值都会 强制转换为字符串,因此省略它或传递 undefined 会导致 lastIndexOf() 搜索字符串 "undefined",这很少是你想要的。

position 可选

该方法返回指定子字符串最后一次出现在小于或等于 position 的位置处的索引,默认值为 +Infinity。如果 position 大于调用字符串的长度,则该方法将搜索整个字符串。如果 position 小于 0,则行为与 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 - 因为它们都导致该方法仅在索引 0 处查找 hello

返回值

找到的 searchString 最后一次出现的索引,如果未找到,则返回 -1

描述

字符串是零索引的:字符串第一个字符的索引为 0,字符串最后一个字符的索引为字符串长度减 1。

js
"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

区分大小写

lastIndexOf() 方法区分大小写。例如,以下表达式返回 -1

js
"Blue Whale, Killer Whale".lastIndexOf("blue"); // returns -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

规范

规范
ECMAScript 语言规范
# sec-string.prototype.lastindexof

浏览器兼容性

BCD 表仅在浏览器中加载

另请参见