# baseIndexOfWith
# Description
这个函数类似于 baseIndexOf ,只是它接受一个比较器。
# Params
(array, value, fromIndex, comparator)
comparator - 传入的比较器
# Return
Number
# Code
function baseIndexOfWith(array, value, fromIndex, comparator) {
let index = fromIndex - 1
const { length } = array
while (++index < length) {
if (comparator(array[index], value)) {
return index
}
}
return -1
}
# Analyze
- 获取下标开始的偏移量 (
fromIndex - 1
),后面要用++index
,所以这里要 -1 while
循环遍历,调用传入的comparator
进行比较,当比较结果为真时,返回当前下标,结束循环- 如果循环完成都没有找到结果,返回 -1
# Remark
- Array.prototype.indexOf() MDN (opens new window) 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 - 1。
- Array.prototype.findIndex() MDN (opens new window)
# Example
const a = [1,2,3,4,5]
baseIndexOfWith(a, 1, 0, (a, b) => a === b) // 0
baseIndexOfWith(a, 0, 0, (a, b) => a === b) // -1