function findIndex(array, predicate, fromIndex)
@param {Array} array The array to inspect.
需要搜索的数组
@param {Function} [predicate=_.identity] The function invoked per iteration.
这个函数会在每一次迭代调用
@param {number} [fromIndex=0] The index to search from.
要搜索的索引
function findIndex(array, predicate, fromIndex) {
// 老规矩,判断数组是否合理,如非数组对象或者空数组
var length = array == null ? 0 : array.length;
if (!length) {
// 如果没有长度,直接返回-1
return -1;
}
// 第三参数是否传参? 若没有传参默认为0,若传参则转化成整数(toInteger 接受任意类型的参数)
var index = fromIndex == null ? 0 : toInteger(fromIndex);
if (index < 0) {
// 若转化后的下标小于0,则增加数组长度的数量,再与0判断取最大值
index = nativeMax(length + index, 0);
}
// 调用没有迭代调用的方法,传入参数
// getIteratee 和回调函数有关,如果自定义了回调函数,则返回自定义的回调函数
// 如果是提供了对应方法(应该是指传入的map、forEach等),则调用该方法,并返回结果
return baseFindIndex(array, getIteratee(predicate, 3), index);
}
网友评论