lastIndexOf
撰写时间:2024-03-15
最新修订:2024-03-15
lastIndexOf
返回元素在数组中最后一次出现的索引值。
原型
- *element
- numberfromIndex = array.length - 1
参数
- element
要查找的元素。
- fromIndex = array.length - 1
-
从哪个索引位置开始查找。可使用负数表示
倒数第n个索引位置
。若未指定,默认为
array.length - 1
,即倒数第1个索引位置
。
返回值
如果要查找的元素在数组中有1或多次出现,则返回最后一次出现的索引值。否则,返回-1。
说明
查找最后一次出现的索引值,共有2种算法。
第一种算法是从左到右查找。如果发现有第一次出现,则再查找第二次、第三次......直至搜索到末尾。然后再看哪一次是最后一次出现。这种算法,前面出现的多次均不算,白查了,因此这种算法效率低下。
第二种算法是从右到左查找。一旦出现,则立即返回所在位置的索引值。因此,这种算法简单、高效。lastIndexOf方法采用的是这种从右到左来查找的反向搜索方法。
这也是为何当参数fromIndex省略时,其默认值为array.length - 1
的原因:从最后一个索引位置开始,从右到左查找。
例子
基本用法
字符b
在数组中现出2次,从左到右,分别位于索引值为0、3的位置上面。从右边开始查找,则在3的位置上查找到该元素,因此,返回3。
指定开始搜索的位置
lastIndexOf方法在指定查找位置时,情况有点复杂,但只要牢牢记住:从右往左查找
,就很容易理解。下面分段讨论。
指定位置在数组范围内
先声明一个名为arr的数组。
其数组索引值的有效值域为[0, 4]
。下面多个代码均以此作为搜索源。
从第4个位置开始,也即最后一个位置开始,从右到左查找,在3的位置找到b
。
从第2个位置开始,从右到左查找,在1的位置找到b
。
从第0个位置开始,从右到左查找,找不到b
,返回-1。
当参数fromIndex为负数时,表示倒数第n个索引位置
。上面从倒数第2个位置开始,从右到左查找,在3的位置找到b
。
指定位置超出数组索引值的右边界
fromIndex指定的位置50超出了数组索引值的右边界,表示从50的位置从右到左查找,在3的位置找到b
。
指定位置超出数组索引值的左边界
fromIndex指定的位置-50超出了数组索引值的左边界,表示从-50的位置从右到左查找,则永远都不会找到特定的元素。因此返回在-1。