JavaScript 数组 lastIndexOf() 方法

JavaScript lastIndexOf() 语法

lastIndexOf() 是 JavaScript 数组的一个方法,它用于找出指定元素在数组 “最后一次” 出现时的下标。如果指定元素不存在,则返回 -1。

lastIndexOf() 方法是 “从右向左” 进行搜索,因此它返回的是从右边数的第一次出现的下标,也就是从左边数的最后一次出现的下标。

提示: indexOf() 方法是 “从左到右” 进行搜索,而 lastIndexOf() 是 “从右到左” 进行搜索。

语法:

arr.lastIndexOf(value, start)

说明:

lastIndexOf() 方法可以接收以下 2 个参数。

  • value(必选):表示想要查找的元素。
  • start(可选):表示查找的开始下标,默认值为 arr.length-1。
    • 当 start 省略时,表示搜索整个数组。
    • 如果 start 大于或等于数组的长度,则搜索会从数组的最后一个索引处开始。
    • 如果 start 是负数,则从数组末尾开始计算索引。例如,-1 表示倒数第一个元素,-2 表示倒数第二个元素,以此类推。

对于 lastIndexOf() 方法,小伙伴们要注意以下几点。

  • lastIndexOf() 方法会严格区分大小写。
  • lastIndexOf() 方法会使用 “严格相等比较(===)” 来比较 value(查找的值)和数组中的元素。这意味着它不会将 NaN 与 NaN 匹配。
  • 如果数组中有多个相同的元素,则 lastIndexOf() 只会返回最后一个匹配到的元素的索引。

提示: 字符串也有 lastIndexOf() 方法,另请参阅:JavaScript 字符串 lastIndexOf() 方法

JavaScript lastIndexOf() 摘要

属于 JavaScript Array 对象
使用频率
修改原数组
官方文档 查看
MDN 查看

JavaScript lastIndexOf() 示例

接下来,我们通过几个简单的例子来讲解一下 JavaScript lastIndexOf() 方法是如何使用的。

示例 1:lastIndexOf() 基本用法

const arr = ["红", "绿", "蓝", "绿"];
console.log(arr.lastIndexOf("绿"));
console.log(arr.lastIndexOf("黄"));

运行结果如下。

3
-1

分析:

虽然 arr 中包含两个 "绿",但 lastIndexOf("绿") 只会返回最后一个的下标(也就是 3)。

示例 2:lastIndexOf() 区分大小写

const arr = ["Python""C++""Java""Go""Rust"];
console.log(arr.lastIndexOf("Go"));
console.log(arr.lastIndexOf("go"));

运行结果如下。

3
-1

示例 3:lastIndexOf() 设置查找的开始下标

const arr = ["Python", "C++", "Java", "Go", "Rust"];
console.log(arr.lastIndexOf("Python", 2));
console.log(arr.lastIndexOf("Java", -4));

运行结果如下。

0
-1

分析:

arr.lastIndexOf("Python", 2) 表示从下标 2 的位置(即第 3 个元素)开始搜索,而 arr.lastIndexOf("Java", -4) 表示从倒数第 4 个元素(即第 2 个元素)开始搜索。

indexOf() 与 lastIndexOf() 的区别

indexOf() 和 lastIndexOf() 这两个方法非常相似,它们之间的区别如下。

  • indexOf() 是 “从左到右” 进行搜索,而 lastIndexOf() 是 “从右到左” 进行搜索。
  • indexOf() 返回的是指定元素 “第一次” 出现的下标,而 lastIndexOf() 返回的是指定元素 “最后一次” 出现的下标(从右边开始数是第一个)。

示例 4:indexOf() vs lastIndexOf()

const arr = ["Python""C++""Java""Go""Python", "Rust"];
console.log(arr.indexOf("Python"));
console.log(arr.lastIndexOf("Python"));

运行结果如下。

0
4

上一篇: indexOf()

下一篇: includes()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号