# 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