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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。