var str = "13600478888,13600147894,....";一共有35000个号码
var mobileNo = "13600847111";我想查找"13600847111"是否在35000个号码中,请教各位大侠代码如何写效率最高,执行最快。
我写的代码是:
function findNo(no){
var strArr = str.split(",");
for(var i=0; i< strArr.length; i++){
if(mobileNo == strArr[i]){
alert("找到!");
break;
}else{
alert("找不到!");
}
}
}求个位大侠帮我优化代码!小弟在此谢先了!

解决方案 »

  1.   

    正则快还是indexOf 快呢....
      

  2.   

    <script language="javascript"> 
    var str = "5,21,3,4";
    var mobileNo = "21"; 
    var re = eval("/(^|[^\\d])"+mobileNo +"([^\\d]|$)/g");
    alert(re.test(str));
    </script>
    正则快
    indexof也是一个一个循环匹配的
      

  3.   

    <html>
    <head>
    <title>JS Test</title>
    <script language="javascript">
    function find()
    {
    var findValue = document.getElementById("findValue").value;
    var strValue  = "123,345,435,533,423,353,534,765,323,676,111,343,555,666,222,555,444,888,111,222";
    document.getElementById("text").innerText = strValue;
    if (strValue.match(findValue))
    {
    alert(findValue + "存在")
    }
    else
    {
    alert(findValue + "不存在")
    }
    }
    </script
    </head>
    <body>
    <form>
    <div id="text"></div>
    <input type="text" id="findValue" />
    <input type="button" value="find" onclick="find()" /> 
    </form>
    </body>
    <html>
      

  4.   

    如果是按整个数组一个一个比较,正则和indexof没什么大区别啊;
    我在想是每次循环花的时间长,还是比较变量是否相等的时间长。如果是第一种情况,那么可以将这个大数组转换成长度一致的若干小数组,然后用一个循环,每次比较多个数;
    只是个建议,想法不成熟