includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。
const array = [1, 2, 3]
console.log(array1.includes(2)) // true
const pets = ['cat', 'dog', 'bat']
console.log(pets.includes('cat')) // true
console.log(pets.includes('at')) // false
includes() 可传入两参数,一个为需要查找的元素值(valueToFind),一个为可选索引值(fromIndex)。从索引处开始查找元素值(valueToFind)。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜(即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。默认为 0。
如果在数组中(或 fromIndex 指定的范围中)找到了 valueToFind,则返回 true,否则返回 false。
0 的值将全部视为相等,与符号无关(即 -0 与 0 和 +0 相等),但 false 不被认为与 0 相等。
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // false
[1, 2, 3].includes(3, 3) // false
[1, 2, 3].includes(3, -1) // true
[1, 2, NaN].includes(NaN) // true
如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
var arr = ['a', 'b', 'c']
arr.includes('a', -100) // true
arr.includes('b', -100) // true
arr.includes('c', -100) // true
arr.includes('a', -2) // false
实现Array.prototype.includes()
Array.prototype.myIncludes = function(value) {
if (this === null) {
throw new TypeError('"This" is null')
}
let fromIndex = arguments[1]
let obj = Object(this)
let len = obj.length >>> 0
if (len === 0) {
return false
}
fromIndex = fromIndex | 0
fromIndex = Math.max(fromIndex >= 0 ? formIndex : len + fromIndex, 0)
while(fromIndex < len) {
if (value === obj[fromIndex]) {
return true
}
fromIndex++
}
return false
}