使用includes
includes()方法,在字符串中使用时,相当于indexOf(),查询成功返回true,失败返回false
JS代码
1.Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。该方法属于 ES7 ,但 Babel 转码器已经支持
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, NaN].includes(NaN); // true
2.该方法的第二个参数表示搜索的起始位置,默认为 0 。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为 -4 ,但数组长度为 3 ),则会重置为从 0 开始。
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
- 3.关于 indexOf 语法
if (arr.indexOf(el) !== -1) {
// ...
}
indexOf方法有两个缺点:
缺点 | 描述 | HTML |
---|---|---|
一是不够语义化 | '它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于 -1 ,表达起来不够直观。 | 代码如下 |
二是,它内部使用严格相当运算符( === )进行判断 | 这会导致对NaN的误判 | 代码如下 |
[NaN].indexOf(NaN)// -1
includes使用的是不一样的判断算法,就没有这个问题。
[NaN].includes(NaN)// true