一、Array.prototype.indexOf()
indexOf方法返回在数组中元素的第一个位置,查找不到则返回-1。
indexOf方法允许接受两个参数
参数一:要查找的元素
参数二:开始查找的位置,从这个位置开始查找,这个位置也可以匹配上,返回的是在整个数组中的位置,允许负值,如果是负值,则最后一位表示-1,向前依次递减;
[1,2,3,4].indexOf(3,2) // 2 从索引为2的地方向后查找
[1,2,3,4].indexOf(3,-1) // -1 从倒数第一位向后查找
如果这个值为正数并且大于数组的长度,则返回-1,如果这个值是负数,并且绝对值大于数组长度则整个数组都会被查找。
[1,2,3,4].indexOf(3,7) // -1
[1,2,3,4].indexOf(3,-7) // 2
indexOf使用的是全等‘===’,NaN无法匹配,但+0和-0是可以匹配上的
[1,2,3,0].indexOf(-0) // 3
[1,2,3,NaN].indexOf(NaN) // -1
也可以应用于字符串
'567'.indexOf('5') // 0
'567'.indexOf(5) // 0
二、Array.prototype.includes()
includes方法返回数组中是否包含某个元素,为true表示包含,为false表示不包含
includes方法允许接收两个参数
参数一:要查找的元素
参数二:开始查找的位置,从这个位置开始查找,这个位置也可以匹配上,返回的是在整个数组中的位置,允许负值,如果是负值,则最后一位表示-1,向前依次递减,找到起始位置后往后查找
[1,2,3,4].includes(2,1) // true
[1,2,3,4].includes(3,-1) // false
如果是正数并且大于数组长度,返回false;如果是负数并且绝对值大于数组长度,整个数组都会进行查找
[1,2,3,4].includes(4,6) // false
[1,2,3,4].includes(4,-6) // true
includes中,0、+0、-0可以匹配,NaN与NaN可以匹配,0与false不能匹配
[1,2,3,NaN].includes(NaN) // true
[1,2,3,0].includes(-0) // true
也可以应用于字符串
'567'.includes(5) // true
'567'.includes('5') // true
includes方法可以利用call方法应用于类数组对象
(function(){
console.log(Array.prototype.includes.call(arguments,1))
})(1,2,3)
// 结果为true
一、Array.prototype.lastIndexOf()
lastIndexOf方法与indexOf方法不同之处就在于这个方法是从后往前查找的,返回的是匹配到元素的最后一个位置
第二个参数,如果绝对值小于等于数组长度,正数和负数的效果是一样的
[1,2,3,1].lastIndexOf(2,-3) // 1
[1,2,3,1].lastIndexOf(2,3) // 1
如果为正数,并且大于数组长度,则整个数组都会被查找;如果为负数,并且绝对值大于数组长度,则返回-1
[1,2,3,1].lastIndexOf(2,7) // 1
[1,2,3,1].lastIndexOf(2,-7) // -1