📅  最后修改于: 2023-12-03 15:16:05.604000             🧑  作者: Mango
在 JavaScript 中,我们经常需要查找一个字符串或数组中的最后一个元素或子字符串的位置,这时就可以用到 lastIndex
。
在字符串中,lastIndex
表示上一次匹配的子字符串的结束位置。可以通过正则表达式的 exec
方法来获取 lastIndex
。例如:
const str = 'hello world';
const regex = /o/g;
let result;
while (result = regex.exec(str)) {
console.log(result.index); // 输出 4 和 7
console.log(regex.lastIndex); // 输出 5 和 8
}
在上面的例子中,正则表达式 /o/g
匹配字符串中的所有 o
,在第一次匹配时,result.index
等于 4,regex.lastIndex
等于 5,表示下一次匹配的起始位置;在第二次匹配时,result.index
等于 7,regex.lastIndex
等于 8,又表示下一次匹配的起始位置。如果正则表达式不带 g
标志,那么 regex.lastIndex
永远都是 0。
在数组中,lastIndex
表示下一次查找的起始位置。可以通过数组的 indexOf
方法或 lastIndexOf
方法来获取 lastIndex
。例如:
const arr = [1, 2, 3, 2, 1];
console.log(arr.indexOf(2)); // 输出 1
console.log(arr.lastIndexOf(2)); // 输出 3
console.log(arr.indexOf(2, 2)); // 输出 3
console.log(arr.lastIndexOf(2, 2)); // 输出 1
在上面的例子中,arr.indexOf(2)
返回第一个值为 2 的元素的索引,即 1;arr.lastIndexOf(2)
返回最后一个值为 2 的元素的索引,即 3;arr.indexOf(2, 2)
从第二个位置开始查找值为 2 的元素,返回第一个匹配的索引,即 3;arr.lastIndexOf(2, 2)
从第二个位置开始查找值为 2 的元素,返回最后一个匹配的索引,即 1。如果数组中没有找到匹配的元素,那么这两个方法都返回 -1。