/**
 * The base implementation of `findIndex` and `findLastIndex`.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {Function} predicate The function invoked per iteration.
 * @param {number} fromIndex The index to search from.
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function baseFindIndex(array, predicate, fromIndex, fromRight) {
	const { length } = array;
	let index = fromIndex + (fromRight ? 1 : -1);

	while (fromRight ? index-- : ++index < length) {
		if (predicate(array[index], index, array)) {
			return index;
		}
	}
	return -1;
}

export default baseFindIndex;
