/**
 * This function is like `baseIndexOf` except that it accepts a comparator.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} value The value to search for.
 * @param {number} fromIndex The index to search from.
 * @param {Function} comparator The comparator invoked per element.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function baseIndexOfWith<T>(array: Array<T>, value: any, fromIndex: number, comparator: (value: T, othValue: any) => boolean): number {
    let index = fromIndex - 1;
    const { length } = array;

    while (++index < length) {
        if (comparator(array[index], value)) {
            return index;
        }
    }
    return -1;
}

export default baseIndexOfWith;
// /**
//  * This function is like `baseIndexOf` except that it accepts a comparator.
//  *
//  * @private
//  * @param {Array} array The array to inspect.
//  * @param {*} value The value to search for.
//  * @param {number} fromIndex The index to search from.
//  * @param {Function} comparator The comparator invoked per element.
//  * @returns {number} Returns the index of the matched value, else `-1`.
//  */
// 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;
// }

// export default baseIndexOfWith;
