编辑代码

function binarySearch(array, n, value) {
    let left = 0;
    let right = n - 1;

    while (left <= right) {
        middle = left + ((right - left) >> 1);

        if (array[middle] >= value)  // 因为是找到最小的等值下标,所以等号放在这里
            right = middle - 1;
        else
            left = middle + 1;
    }

    if (left < n && array[left] == value)
        return left;

    return -1;
}

const arr = [1, 2, 2, 3, 4, 4, 6]
console.log(binarySearch(arr, arr.length, 2))