随记002: indexOf ()、includes()有何异同?
主要用途:
判断字符串或者数组中是否存在对应元素
1、数组中的includes和indexOf方法比较
-
函数返回值
includes(): 返回布尔类型
indexof(): 返回的是一个整数的类型值,表示当前的值在数组中第一次出现的索引 -
函数的第二个参数(两种方法都是可以接收两个数的)
- indexoOf():
第一个参数:要查找的元素;第二个参数:fromIndex从哪个索引值开始查找
1、不传递第二个参数: 默认从0开始
2、传递第二个参数: 如果存在,返回对应索引值;如果不存在,返回-1[1,2,3,4,5].indexOf(2);// 1
//从索引值为2的地方开始查找值为2 [1,2,3,4,5].indexOf(2,2);// -1 //'-'代表需要从后往前 在这里:-1->4、-2->3......以此类推 //从4(索引值为-1)的位置开始寻找2 [1,2,3,4].indexOf(2,-1);// -1
- includes():
[1,2,3,4,5].includes(2,2);// false //从5(索引值为-1)的位置开始寻找2 [1,2,3,4,5].includes(2,-1);// false //从2(索引值为-3)的位置开始寻找2 [1,2,3,4].includes(2,-3);// true
- indexoOf():
-
indexOf ()和includes()区别
- NaN的处理:
indexoOf():不能匹配到数组中的NaN;
includes():能匹配到数组中的NaN[NaN].indexOf(NaN);// -1 [NaN].includes(NaN);// true
- undefined的处理:(可以定义一个稀疏数组来进行验证)
indexoOf(): 识别不了undefined(直接忽略)
includes(): 能识别稀疏数组的undefined//前提:已经定义了一个稀疏数组 arr arr.indexOf(undefined);// -1 are.includes(undefined);// true
- NaN的处理:
2、字符串和数组中indexOf方法的比较
-
相同点
方法的基本调用:第一个参数:要查找的元素;第二个参数:position从哪个索引值开始查找 -
不同点
数据类型转换:
如果匹配的值不是字符串,那么对于字符串的数组的indexOf()方法调用是不一致的字符串在执行匹配的时候:进行类型转换
'12345'.indexOf(2);// 1
数组在执行匹配的时候:严格相等匹配(===)
['1','2','3','4','5'].indexOf(2);// -1
3、字符串和数组中includes方法比较
-
相同点
方法的基本调用一致 -
不同点
数据类型转换:字符串在执行匹配的时候:进行类型转换
'12345'.includes(2);// true
数组在执行匹配的时候:严格相等匹配(===)
['1','2','3','4','5'].includes(2);// false