indexOf与includes的区别

本文详细对比了JavaScript中indexOf和includes方法的区别,包括它们的返回值类型、对NaN的处理方式以及对空值的识别差异。通过具体示例,阐述了在何种场景下选择哪种方法更为合适。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

indexOf与includes的区别:https://blog.youkuaiyun.com/gtLBTNq9mr3/article/details/78700118

 

 

includes和indexOf相比较:
相同点:二者所传的参数是一样的,第一个参数传要判断的元素,第二个参数传开始检索的下标位置
不同点:返回值不同
1、indexOf:返回的是元素的所在下标,如果不存在则返回-1
优点:元素存在可获取到元素的位置
缺点:(1)无法判断是否有NaN的元素(2)返回的值不够语义化,需要我们进行处理

2、includes:返回一个Boolean值,有:true,没有:false
优点:(1)可判断NaN元素(2)返回值十分语义化,不需要再次处理
缺点:无法获取元素的下标
---------------------
作者:wangcuiling_123
来源:优快云
原文:https://blog.youkuaiyun.com/wangcuiling_123/article/details/78523066
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

从ES6部署includes方法,好像indexOf就失去了它的用武之地了,到底indexOf有什么不足,这篇文章就要来介绍这两个方法之间的区别。

 

看一个函数,先看他们的返回值,一个是返回数值型的,一个是返回布尔型的,所以在if条件判断的时候includes要简单得多,而indexOf 需要多写一个条件进行判断。

 

var ary = [1];

if (ary.indexOf(1) !== -1) {

    console.log("数组存在1")

}

if (ary.includes(1)) {

    console.log("数组存在1")

}

 

如果数组中有NaN,你又正好需要判断数组是否有存在NaN,这时你使用indexOf是无法判断的,你必须使用includes这个方法。

 

var ary1 = [NaN];

console.log(ary1.indexOf(NaN))//-1

console.log(ary1.includes(NaN))//true

 

当数组的有空的值的时候,includes会认为空的值是undefined,而indexOf不会。

 

var ary1 = new Array(3);

console.log(ary1.indexOf(undefined));//-1

console.log(ary1.includes(undefined))//true

 

总结,到底什么时候使用includes什么时候使用indexOf还是要看情况来决定,如果你想要查找某个元素在数组中的位置,你就用indexOf,如果你只是想知道数组中是否存在某个元素,你用includes方法比较合适的。

转载于:https://www.cnblogs.com/bydzhangxiaowei/p/10475589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值