js数组中的indexOf、lastIndexOf、includes解析

一、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

你可能感兴趣的:(javascript,前端,开发语言)