**## 讲includes(),indexOf()
简单的跟大家分享一些我对于includes(),indexOf()的了解。
我也是偶然的情况下发现了includes(),以前我只知道indeOf()。遇到了也就顺便了解一点。
两者工作性质都是查找数据是否存在该元素;要不然我也不会知道includes()。但是两者还是有一些区别的,我们先创建一个全局数组:
var arr = ['k','a','a','a',NaN,['e','f'],'b','c']
我们先简单的查找一个字符:
console.log(arr.includes('a')) //true
console.log(arr.includes('aa')) //false
console.log(arr.indexOf('a')) //1
console.log(arr.indexOf('aa')) //-1
(1)includes():若存在返回true 若不存在返回false,很直接的告诉你是否存在;
(2)indeOf():若存在返回下标 ,若不存在返回-1,不仅告诉该元素是否存在还顺带告诉你该元素下标,可以说indeOf()更倾向于满足开发人员需求吧(不准确,我只是没有词语形容)。
(3)includes()可以传两个参数code:要查找的元素和num:出现过几次(参数名自定义,我是为了方便讲解)大家回看下上面的数组
console.log(arr.includes('a',3))
字符a在数组中出现过3次,那么我第二参数可以写1,2或者3都会返回true,写其它都是返回false。第二参数我是没有实战运用过感觉比较鸡肋。
(4)两者都是只对简单数据类型的查找
console.log(arr.includes(['e','f'])) //false
console.log(arr.indexOf(['e','f'])) //-1
(5)两者都是采用=== 的操作符号进行比较的,不同之处在于对NaN的处理结果。js中NaN===NaN 返回时false,故而言之indexOf(NaN)是返回-1的;但是includes()不是这样的,它是可以查询到NaN的。
console.log(arr.includes(NaN)) //true
console.log(arr.indexOf(NaN)) //-1
本人公众号,平时也会分享一些前端知识,感兴趣的同学可以了解一下