JS如何判断数组是否包含某字符串||判断字符串是否包含某字符串

时间:2025-02-07 08:10:35

indexOf(es5)与includes(es6)

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

indexOf(es5):

区别:他是es5的有点老了,不是那么很好用
返回值:返回的是元素的所在下标,如果不存在则返回-1
优点:
元素存在可获取到元素的位置
缺点:
(1)无法判断是否有NaN的元素
(2)返回的值不够语义化,需要我们进行处理

includes(es6):

区别:他是es6的,当然是好用才更新了呗
优点:
(1)可判断NaN元素
(2)返回值十分语义化,不需要再次处理
缺点:
无法获取元素的下标

相同点:

二者所传的参数是一样的,第一个参数传要判断的元素,第二个参数传开始检索的下标位置

案例

var ary = [1];

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

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

}

if (ary.includes(1)) {

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

}
var ary1 = [NaN];

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

console.log(ary1.includes(NaN))//true
var ary1 = new Array(3);

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

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