indexOf与includes区别

判断字符串或者数组中是否存在对应元素

indexOf: 查找字符串中某个字符或字符串下表的位置,找到返回第一次出现的下标, 未找到返回-1

// 不传递第二个参数: 默认从0开始
[1,2,3,4,5].indexOf(3);  // 查找字符3,找到返回3所在的下标,即为2

延申:

// 第一个参数要查找的, 第二个参数从哪个索引开始
[1,2,3,4,5].indexOf(3, 1);  // 查找字符3,从索引1开始找直到最后,  字符3在索引2的位置,所以能找到3, 返回索引值2


//从索引值为2的地方开始查找值为1,找不到返回-1,找到返回索引值
[1,2,3,4,5].indexOf(2,1);// -1

//'-'代表需要从后往前  在这里:-1指向字符4、-2->3......以此类推
//从4(索引值为-1)的位置开始寻找2
[1,2,3,4].indexOf(2,-1);// -1



 includes:判断一个字符串是否包含另外一个字符串,包含返回true, 否则false

 // 第一个参数:需要查找的元素,  第二个参数查找的起始索引,不写默认从0开始
[1,2,3,4,5].includes(2); // true

延申:

 // 判断字符串2,是否在数组里,从索引为1开始向右查找直到最后,字符串2在索引1的位置
[1,2,3,4,5].includes(2,1);// true

 //从5(索引值为-1)的位置开始向右寻找2,找不到,返回false
 [1,2,3,4,5].includes(2,-1);// false

 //从索引值为-3的位置开始寻找字符c, 索引-3对应数组字符串c的位置。e-> -1, d-> -2, c-> -3
 [a,b,c,d,e].includes(c,-3);// true

 NaN、undefined 的处理:
indexoOf():不能匹配到数组中的NaN
includes():能匹配到数组中的NaN

[1,2,NaN].indexOf(NaN);// -1
[1,2,NaN].includes(NaN);// true


[1,2,undefined].indexOf(undefined);// -1
[1,2,undefined].includes(undefined);// true

相同点:


方法的基本调用:第一个参数:要查找的元素;第二个参数:position从哪个索引值开始查找

不同点:

数据类型转换:

        字符串在执行匹配的时候:进行类型转换

        数组在执行匹配的时候:严格相等匹配(===)

'12345'.indexOf(2);   // 1  会进行数据类型转换
'12345'.includes(2);  // true


['1','2','3','4','5'].indexOf(2);   // -1   不会进行数据类型转换
['1','2','3','4','5'].includes(2);  // false

应用:

        因为includes,返回是布尔类型true、false,可用于控制某个功能的显隐。

        因为indexOf,返回是索引、-1,可用于判断某个值是否在数组里

你可能感兴趣的:(js语法及应用案例,前端,javascript,react.js)