JavaScript – 数组 lastIndexOf() 方法

JavaScript – 数组 lastIndexOf() 方法

JavaScript中经常使用数组进行相关的数据处理操作。其中,Array lastIndexOf()方法是比较基础和常用的操作之一,用于查找给定元素在数组中最后出现的位置。本文将详细介绍该方法的使用以及相关的细节问题。

lastIndexOf()方法的语法

lastIndexOf()方法具体的使用和语法如下:

array.lastIndexOf(searchElement[, fromIndex])

其中,searchElement表示要查找的元素,fromIndex则是起始查找位置。如果没有设置fromIndex,则默认从数组末尾开始查找。该方法返回最后一个匹配的元素的位置,若没有找到,则返回-1。

下面我们通过一些实例来说明该函数的使用方法。

示例代码

示例一:查找某元素在数组中最后一次出现的位置

let arr = ["apple", "banana", "orange", "grape", "apple", "watermelon"];

let index = arr.lastIndexOf("apple");
console.log(index);  // 输出5

示例二:指定起始查找位置

let arr = ["apple", "banana", "orange", "grape", "apple", "watermelon"];

let index = arr.lastIndexOf("apple", 3);
console.log(index);  // 输出0

细节问题

1. 对于不支持indexOf的浏览器

在IE8及以下版本的浏览器中,由于其不支持lastIndexOf()方法,因此需要通过以下代码来解决问题:

if(!Array.prototype.lastIndexOf){
    Array.prototype.lastIndexOf = function(searchElement, fromIndex) {

        var len = this.length;

        // 在数组末尾开始查找,如果不存在搜索元素,返回-1
        if (!fromIndex){
            fromIndex = len - 1;
        }
        // 如果searchElement不存在数组中,处理后返回-1
        else if (fromIndex && fromIndex < 0){
            fromIndex = Math.max(0, len + fromIndex);
        }

        for (var i = fromIndex; i >= 0; i--) {
            if (this[i] === searchElement){
                return i;
            }
        }
        // 如果未找到指定元素,则返回-1
        return -1;
    };
}

2. 不支持对引用类型的操作

lastIndexOf()方法不支持对引用类型的操作,例如:

let arr = [{name: "apple"}, {name: "orange"}, {name: "banana"}];
let index = arr.lastIndexOf({name: "orange"}); 

console.log(index); // 输出 -1

原因是lastIndexOf()方法比较的是引用地址,所以会返回未找到的结果。如果要指定查找引用类型的方式,则需要自定义方法来实现。

3. 注意null或undefined的使用

lastIndexOf()方法对数组元素值为null或undefined的查找进行了特殊处理:

let arr = [1, 2, null, undefined];
console.log(arr.lastIndexOf(null)); // 输出2
console.log(arr.lastIndexOf(undefined)); // 输出3

在这种情况下,lastIndexOf()方法返回的是搜索元素的非严格相等比较结果。

结论

本文详细介绍了JavaScript Array lastIndexOf()方法的语法和使用方法,同时还讨论了关于代码实现的部分细节问题,供JavaScript程序开发人员学习和使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程