SOURCE

function rank(arr, key) {
    //循环实现
    var lo = 0, hi = arr.length - 1, mid = 0
    while (lo <= hi) {
        mid = lo + parseInt((hi - lo) / 2)
        console.log('mid:' + mid)
        if (key > arr[mid]) lo = mid + 1
        else if (key < arr[mid]) hi = mid - 1
        else return mid
    }
    return -1
}
var data = [1, 2, 3, 5, 7, 8,8,9]
//console.log(rank(data, 3))

function recRank(arr, key, lo, hi) {
    //递归实现
    if(lo > hi) return -1
    var mid = lo + parseInt((hi - lo) / 2)
    if (key > arr[mid]) return recRank(arr,key,mid + 1,hi) 
    else if (key < arr[mid]) return recRank(arr,key,lo, mid -1)
    else return mid 
}
console.log(recRank(data, 9,0,data.length -1))
console 命令行工具 X clear

                    
>
console