解决方案 »

  1.   

    按照你提供的两个数组[你原数组定义有问题],猜测,你是不是想要如下的效果:
        var revenue = [350,450,550,650,850,1000,1100,1250,1500];
        var reward   = [0,30,40,50,100,200,240,300,400];
        /*
            根据指定的值,在revenue查找第一个比它大的值,返回对应的索引,通过索引在reward获取对应的奖励
            1:如果值小于revenue最小的值时,则奖励0。所以reward前被了个0
            2:如果值大于revenue最大的值时,则奖励最高一档
            
            ***注意***
            前提是:revenue为整型数组,且已经按照从小到大排好了序的
        */
        function find(array,val){
            //如果值小于revenue最小的值时,则奖励0
            if(val  <   Math.min.apply(null,array)){
                return 0;
            };
            //如果值大于revenue最大的值时,则奖励最高一档
            if(val  >   Math.max.apply(null,array)){
                return array.length-1;
            };
            var idx =   0,
                i   =   0,
                j   =   array.length;
            for(;i<j;i++){
                if(array[i] > val){
                    idx = i;
                    break;
                };
            };
            return idx;
        };
        alert('奖励:'+reward[find(revenue,370)]);    
      

  2.   

    妈妈的
       var range  = [350,450,550,650,850,1000,1100,1250,1500];
       var reward = [30,40,50,100,200,240,300,400];
       
       function binarySearch(arr,findVal,leftIndex,rightIndex){  
      if(leftIndex > rightIndex){ 
      var find = leftIndex-1
              return find;
          }
      var midIndex = Math.floor((leftIndex+rightIndex)/2);
          var midVal = arr[midIndex]; 
          if(midVal>findVal){          
              return binarySearch(arr,findVal,leftIndex,midIndex-1);
          }else if(midVal<findVal){
              return binarySearch(arr,findVal,midIndex+1,rightIndex);
          }else {
           var find = midIndex +1;
              return find;
          } 
       
       
       }      
       function ward(a){
       if(a<0){
      return 'no'; 
       }
       if(a>7){
       a=7;
       }
       return reward[a];
       }
       var $a = binarySearch(range,800,0,9);
       var $ward= ward($a);