JS 如何判断一个数字在某一个区间内

rinima6114 2014-01-28 09:40:58
现在有两个数组
var revenue = new Array([350],[450],[550],[650],[850],[1000],[1100],[1250],[1500]);
var reward = new Array([30],[40],[50],[100],[200],[240],[300],[400]);

如果收入大于350 小于 450 那么就奖励30
如果收入大于450小于550,就奖励50

要实现的效果跟Excel中的VlookUP函数比较像,想问下各位朋友,JS中如何有没有类似的函数,或者怎么写最有效的判断语句。
...全文
4366 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rinima6114 2014-01-28
  • 打赏
  • 举报
回复
嗯嗯 再次谢谢二楼的u011461314 不好意思 拜谢了!
zhjdg 2014-01-28
  • 打赏
  • 举报
回复
顺序都排好的,绝对是2分。
zhjdg 2014-01-28
  • 打赏
  • 举报
回复
妈妈的
   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);
泡泡鱼_ 2014-01-28
  • 打赏
  • 举报
回复
是的,原理说来说,二分法确实效率要高,但相对来讲在操作大数组,或重复操作时效率高.像你这种长度和需求的,着实没必要,那效率几乎是木有差别
rinima6114 2014-01-28
  • 打赏
  • 举报
回复
谢谢楼上,是我要的效果,还有二楼说的二分法对我很有启发,相比来说二分法的效率要高一点 再次感谢两位的思路!
泡泡鱼_ 2014-01-28
  • 打赏
  • 举报
回复
按照你提供的两个数组[你原数组定义有问题],猜测,你是不是想要如下的效果:
    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)]);
rinima6114 2014-01-28
  • 打赏
  • 举报
回复
引用 1 楼 u011461314 的回复:
二分法查找。。。。
能否对例子做一点详细的解释呢?
zhjdg 2014-01-28
  • 打赏
  • 举报
回复
二分法查找。。。。
js表单验证 表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的验证类型有: 1.是否为空; 2.中文字符; 3.双字节字符 4.英文; 5.数字; 6.整数; 7.实数; 8.Email地址; 9.使用HTTP协议的网址; 10.电话号码; 11.货币; 12.手机号码; 13.邮政编码; 14.身份证号码(1.05增强); 15.QQ号码; 16.日期; 17.符合安全规则的密码; 18.某项的重复值; 19.两数的关系比较; 20.判断输入值是否在(n, m)区间; 21.输入字符长度限制(可按字节比较); 22.对于具有相同名称的单选按钮的选中判断; 23.限制具有相同名称的多选按钮的选中数目; 24.自定义的正则表达式验证; 25.文件上传格式过滤(1.04新增)。 更新历史: 1.01 修正对12月份的日期验证(感谢 flylg999 ) 1.03 修正Range验证类型时将数字当字符串比较的bug(感谢 cncom 和 xtlhnhbb ) 修正日期验证(感谢 Papsam ) 增加Username验证类型 增加对Phone验证类型时支持分机号 1.04 增加文件格式的过滤,用于上传时限制上传的文件格式 1.05 增强对身份证号码的验证 运行环境(客户端): 在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过; 在Lunix RedHat 9下的Netscape测试通过;
JS_check105验证及帮助文档 表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的验证类型有: 1.是否为空; 2.中文字符; 3.双字节字符 4.英文; 5.数字; 6.整数; 7.实数; 8.Email地址; 9.使用HTTP协议的网址; 10.电话号码; 11.货币; 12.手机号码; 13.邮政编码; 14.身份证号码; 15.QQ号码; 16.日期; 17.符合安全规则的密码; 18.某项的重复值; 19.两数的关系比较; 20.判断输入值是否在(n, m)区间; 21.输入字符长度限制(可按字节比较); 22.对于具有相同名称的单选按钮的选中判断; 23.限制具有相同名称的多选按钮的选中数目; 24.自定义的正则表达式验证; 运行环境(客户端): 在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过; 在Lunix RedHat 9下的Netscape测试通过;
Javascript表单验证控件(Validator v1.05).rar
---------------------------------
内含以下两个文件:
Validator.chm(详细的使用帮助文档)
validator.js(源代码,当然没有prototype.js强大,但最重要的是功能非常实用,使用非常简单。)
---------------------------------
(如果有需要,我会另外把prototype的相关代码及使用开发手册也发上来)
---------------------------------
具体简介如下:
表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。
Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。
Validator目前可实现的验证类型有:
1.是否为空;
2.中文字符;
3.双字节字符
4.英文;
5.数字
6.整数;
7.实数;
8.Email地址;
9.使用HTTP协议的网址;
10.电话号码;
11.货币;
12.手机号码;
13.邮政编码;
14.身份证号码(1.05增强);
15.QQ号码;
16.日期;
17.符合安全规则的密码;
18.某项的重复值;
19.两数的关系比较;
20.判断输入值是否在(n, m)区间
21.输入字符长度限制(可按字节比较);
22.对于具有相同名称的单选按钮的选中判断
23.限制具有相同名称的多选按钮的选中数目;
24.自定义的正则表达式验证;
25.文件上传格式过滤(1.04新增)。


不好意思哈,收一分钱(评价一下就是免费了)。

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧