JS如何判断⼀个数字在某⼀个区间内web翎云阁 2016-11-28 10:13
现在有两个数组:revenue和reward
如果收⼊⼤于350 ⼩于 450 那么就奖励30
如果收⼊⼤于450⼩于550,就奖励50
要实现的效果跟Excel中的VlookUP函数⽐较像,怎么写最有效的判断语句。
第⼀种普通⽅法:
/*
根据指定的值,在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;i<j;i++){
if(array[i] > val){
idx = i;
break;
function怎么记忆};
};
return idx;
};
alert('奖励:'+reward[find(revenue,370)]);
第⼆种⼆分法:
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);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。