搜索数组
搜索数组的方法有: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