数组新增方法(一)----------Array.includes()函数的用法
在ES5中,Array已经提供了indexOf()用来查找某个元素的位置,indexOf()方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1
,表达起来不够直观。二是,它内部使用严格相等运算符(===
)进行判断,这会导致对NaN的误判。
const arr = [1,2,3,4,5,NaN] console.log(arr.indexOf(1)) //0 console.log(arr.indexOf(7)) //-1 console.log(arr.indexOf(NaN)) //-1
ES6提供了Array.includes()函数判断是否包含某一元素,解决了indexOf()的上述问题。它直接返回true或者false表示是否包含元素,对NaN一样有效
const arr = [1,2,3,4,5,NaN] console.log(arr.includes(1)) //true console.log(arr.includes(7)) //false console.log(arr.includes(NaN)) //true
该方法的第二个参数表示搜索的起始位置,默认为0
。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4
,但数组长度为3
),则会重置为从0
开始。
const arr = [1,2,3] console.log(arr.includes(3,3)) //false console.log(arr.includes(3,-4)) //true