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

本文详细介绍了JavaScript中数组的三个重要方法:indexOf()用于查找元素首次出现的位置,includes()判断数组是否包含特定元素,lastIndexOf()则从后向前查找元素的最后出现位置。这三个方法都考虑了参数的正负索引和特殊值如NaN的处理情况。此外,includes()还可以应用于类数组对象。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值