includes语法
includes()
方法是 ES2016(ES7) 部署的,用来判断一个数组是否包含一个指定的值,如果包含则返回true
,否则返回false
。
arr.includes(valueToFind, fromIndex)
-
valueToFind
: 需要查找的元素值。 -
fromIndex
: (可选) 从fromIndex
索引处开始查找valueToFind
。如果为负值(即从末尾开始往前跳fromIndex
的绝对值个索引,然后往后搜寻),默认为 0。
和indexOf的区别
看一个函数,先看他们的返回值,indexOf
是返回数值型的,includes
是返回布尔型的,所以在if
条件判断的时候includes
要简单得多,而indexOf
需要多写一个条件进行判断。
const arr = [1]
if (arr.indexOf(1) !== -1) {
console.log("数组存在1")
}
if (arr.includes(1)) {
console.log("数组存在1")
}
如果数组中有NaN
,你又正好需要判断数组是否有存在NaN
,这时你使用indexOf
是无法判断的,你必须使用includes
这个方法。
const arr = [NaN]
console.log(arr.indexOf(NaN)) // -1
console.log(arr.includes(NaN)) // true
当数组的有空的值的时候,includes
会认为空的值是undefined
,而indexOf
不会。
const arr = new Array(3)
console.log(arr.indexOf(undefined)) // -1
console.log(arr.includes(undefined)) // true
总结
到底什么时候使用includes
什么时候使用indexOf
还是要看情况来决定,如果你想要查找某个元素在数组中的位置,你就用indexOf
,如果你只是想知道数组中是否存在某个元素,你用includes
方法比较合适的。