# baseIndexOf
# Description
没有 fromIndex
边界检查的 indexOf
的基本实现。找到返回下标,否则返回-1
没有处理 fromIndex
为负数的情况
可以匹配 NaN
# Params
(array, value, fromIndex)
fromIndex - 开始的下标
# Return
Number
# Depend
import baseFindIndex from './baseFindIndex.js'
import baseIsNaN from './baseIsNaN.js'
import strictIndexOf from './strictIndexOf.js'
# Code
function baseIndexOf(array, value, fromIndex) {
return value === value
? strictIndexOf(array, value, fromIndex)
: baseFindIndex(array, baseIsNaN, fromIndex)
}
# Analyze
判断
value === value
,调用strictIndexOf
查找下标否则使用
baseFindIndex
查找,传给baseFindIndex
的判断方法为baseIsNaN
# Remark
全等操作符认为
NaN
与其他任何值都不全等,包括它自己。等式 (x !== x) 成立的唯一情况是 x 的值为 NaN对于
NaN
使用了自己定义的baseIsNaN
进行判断,会返回true
# Example
const a = [1,2, NaN, 4, 5]
baseIndexOf(a, 2, 0) // 1
baseIndexOf(a, 3, 0) // -1
baseIndexOf(a, NaN, 0) // 2