📜  数组的indexOf和findIndex函数的区别(1)

📅  最后修改于: 2023-12-03 15:26:12.160000             🧑  作者: Mango

数组的indexOf和findIndex函数的区别

在JavaScript中,数组是一种常用的数据类型,通过数组可以非常方便地存储一组数据。而数组的indexOf和findIndex函数都是常用的数组查找函数,它们的作用是找到数组中第一个符合条件的元素的位置索引。但这两个函数却有一些区别。

indexOf函数

indexOf函数是数组对象自带的方法。它的作用是返回数组中给定元素的第一个索引,如果不存在则返回-1。该函数的语法如下:

array.indexOf(searchElement[, fromIndex])

其中,searchElement表示要查找的元素,fromIndex表示开始查找的索引。如果省略fromIndex,则默认从数组的开头开始查找。如果fromIndex为负数,则从数组末尾开始计算的索引。例如:

const arr = [1, 2, 3, 4, 5];
console.log(arr.indexOf(3)); // 输出2
console.log(arr.indexOf(6)); // 输出-1
console.log(arr.indexOf(2, 2)); // 输出-1
console.log(arr.indexOf(2, -2)); // 输出-1

上述代码中,arr.indexOf(3)返回2,表示3在数组中的位置是2;arr.indexOf(6)返回-1,表示数组中不包含6;arr.indexOf(2, 2)返回-1,表示在从第2个元素开始查找的过程中,未找到2;arr.indexOf(2, -2)返回-1,表示在从倒数第二个元素开始查找的过程中,未找到2。

findIndex函数

findIndex函数是ES6引入的数组方法。该函数的作用是返回数组中符合条件的第一个元素的索引,如果不存在则返回-1。该函数不会修改原数组。该函数的语法如下:

array.findIndex(callback[, thisArg])

其中,callback表示要执行的函数,该函数会传入三个参数:element(当前元素)、index(当前索引)和array(当前数组)。thisArg表示函数中this的值(可选)。例如:

const arr = [1, 2, 3, 4, 5];
console.log(arr.findIndex(item => item === 3)); // 输出2
console.log(arr.findIndex(item => item === 6)); // 输出-1
console.log(arr.findIndex((item, index) => index > 2)); // 输出3

上述代码中,arr.findIndex(item => item === 3)返回2,表示在数组中找到符合条件的元素3,并返回其位置索引;arr.findIndex(item => item === 6)返回-1,表示数组中不存在符合条件的元素6;arr.findIndex((item, index) => index > 2)返回3,表示在数组中找到符合条件的元素4,并返回其位置索引。

总结一下,indexOf函数是原生JavaScript函数,而findIndex函数是ES6中新增的数组方法。它们的区别在于:indexOf是查找具体值的位置,而findIndex是根据指定规则查找第一个符合条件的元素的位置。

总结

数组的indexOf和findIndex函数都是数组查找函数,它们的作用是找到数组中第一个符合条件的元素的位置索引。但这两个函数却有一些区别,indexOf是查找具体值的位置,而findIndex是根据指定规则查找第一个符合条件的元素的位置。