搜索数组
搜索数组的方法有:indexOf()、lastIndexOf()、find()、findIndex()、includes()。
indexOf()
indexOf()方法在数组中从前往后搜索,找到第一个匹配的元素就返回其索引。如果不存在,则返回-1。
ts
const resOfIndex = arr.indexOf("banana");indexOf()方法还可以接受第二个参数,如果是正数,则表示从第几个元素开始从前往后搜索。
ts
const resOfIndexForwards = arr.indexOf("banana", 2);第二个参数可以是负数,表示从倒数第几个元素开始搜索(length - fromIndex)。
ts
const resOfIndexBackwards = arr.indexOf("banana", -2);lastIndexOf()
lastIndexOf()方法在数组中从后往前搜索,找到 第一个匹配(最后一个索引) 的元素就返回其索引。如果不存在,则返回-1。
ts
const resOfLastIndex = arr.lastIndexOf("banana");lastIndexOf()方法还可以接受第二个参数,如果是正数,则表示从第几个元素开始从后往前搜索。
ts
const resOfLastForwards = arr.lastIndexOf("banana", 2);第二个参数可以是负数,表示从倒数第几个元素开始搜索(length - fromIndex)。
ts
const resOfLastBackwards = arr.lastIndexOf("banana", -2);find()
find()方法返回数组中第一个匹配的元素。如果没有找到匹配的元素,则返回 undefined。
ts
const resOfFind = arr.find((item, index, obj) => {
return item === "banana";
});findIndex()
findIndex()方法返回数组中第一个匹配的元素的索引。如果没有找到匹配的元素,则返回 -1。
ts
const resOfFindIndex = arr.findIndex((item, index, obj) => {
return item === "banana";
});includes()
includes()方法返回一个布尔值,表示数组中是否包含指定的值。
ts
const resOfIncludes = arr.includes("banana");includes()方法还可以接受第二个参数,表示从第几个元素开始搜索。
ts
const resOfIncludesForwards = arr.includes("banana", 2);第二个参数可以是负数,表示从倒数第几个元素开始搜索(length - fromIndex)。
ts
const resOfIncludesBackwards = arr.includes("banana", -2);搜索数组的比较算法差异
TIP
indexOf()和lastIndexOf()方法都是使用严格相等运算符(===)来比较元素的,而includes()方法则是使用SameValueZero算法来比较元素的。
因此,indexOf()和lastIndexOf()方法无法区分NaN,而includes()方法可以。
ts
const resOfIndexOfNaN = arr.indexOf(NaN); // -1
const resOfIncludesNaN = arr.includes(NaN); // true