ES5 indexOf在判断数组是否包含某个元素时有两个小不足,一是它会返回-1和元素的位置来表示包含,定位方面没问题,就是不够语义化。另一个问题是不能判断是否有NaN的元素

let arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
arr1.indexOf(NaN)    // -1

ES6 Array.includes()判断是否包含某一元素,除了不能定位外,解决了indexOf的上述两个问题。它直接返回true或者false表示是否包含某一元素,对NaN一样有效

arr1.includes('c')    // true
arr1.includes('z')    // false
arr1.includes(NaN)    // true

includes()函数的第二个参数表示判断的起始位置

arr1.includes('d', 1)    // true
arr1.includes('d', 3)    // true
arr1.includes('d', 4)    // false

第二个参数也可以是负数,表示从右数过来第几个,但是不改变判断搜索的方向,搜索方向还是从左到右

arr1.includes('k', -1)    // false
arr1.includes('k', -2)    // true
arr1.includes('i', -3)    // false

原文: https://www.cnblogs.com/kongxianghai/p/7560343.html


坂田银八
24 声望2 粉丝

前端底层打工仔