# arrayIncludes
# Description
和 数组的 includes 方法类似,不过不支持从特定位置开始查找
# Params
(array, value)
# Return
Boolean
# Depend
import baseIndexOf from './baseIndexOf.js'
# Code
function arrayIncludes(array, value) {
const length = array == null ? 0 : array.length
return !!length && baseIndexOf(array, value, 0) > -1
}
# Analyze
- 判断
array
是否为null
(兼容undefined
),如果是 取length
为0,否则取array.length
- 如果
length
为假值,则返回false
, 否则 调用baseIndexOf
拿到元素下标,判断下标是否大于-1
,如果大于-1
,说明找到了,返回true
,否则返回false
# Remark
- 短路计算 MDN (opens new window)
- 双重非(!!)运算符显式地将任意值强制转换为其对应的布尔值
- Array.prototype.includes() MDN (opens new window) 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。
# Example
const a = [1,2,3,4,5, NaN]
arrayIncludes(a, 3) // true
arrayIncludes(a, -1) // false
arrayIncludes(a, NaN) // true