你描述的有点问题
是这个意思吧?a = [10, 30, 50, 70, 90];function xianglin(jiange, weizhi) {//间隔 为止
  var n = 0;
  var i = 0;
  while(n < weizhi) {
    n += jiange;
    while(n > a[i]) i++;
  }
  return a[i-1];
}
document.write(xianglin(20, 61) + '<br>'); //70
document.write(xianglin(20, 59) + '<br>'); //50

解决方案 »

  1.   

    var startValue = 10;
    function xianglin(jiange, weizhi)
    {
        return (weizhi/jiange|0)*jiange + startValue;
    }
    document.write(xianglin(20, 61) + '<br>'); //70
    document.write(xianglin(20, 59) + '<br>'); //50
      

  2.   

    剛測了幾個間隔發現有問題,修改了一下測試結果正常:var startValue = 10; //數組起始值
    function xianglin(jiange, weizhi)
    {            
        return startValue + 
            ((weizhi-startValue)/jiange|0)*jiange + 
            (Math.round(((weizhi-startValue)%jiange)/jiange) && jiange);
    }
      

  3.   

    描述不是很清晰,看看是否这样。echo xianglin(20,61).'<br>'; // 70
    echo xianglin(20,59).'<br>'; // 50
    echo xianglin(20,75);           // 70function xianglin($jiange, $weizhi){
        $arr = array(10,30,50,70,90);
        $start = -1;
        $end = -1;
        for($i=0,$len=count($arr); $i<$len; $i++){
            if($weizhi<$arr[$i]){
                $start = isset($arr[$i-1])? $arr[$i-1] : -1;
                $end = $arr[$i];
                break;
            }
        }
        if($start==-1){
            $start = $arr[0];
            $end = $arr[1];
        }    if($end==-1){
            $start = $arr[count($arr)-2];
            $end = $arr[count($arr)-1];
        }    if($weizhi>=(int)(($start+$end)/2)){
            return $end;
        }else{
            return $start;
        }
    }