道非道 非常道

勤思、谨言、慎行、厚积、薄发

统计

web

天圆

经济 政治 军事

键康

[转] js 数组 检索

转自: http://zhidao.baidu.com/question/42679804.html 有空研究
 
网上看到一个老前辈写过这段程序,讨论JS数组的检索速度,但我发现一个问题,请看:
<input id="count" value="50000" size="7" maxlength="6">
<input type="button" value="数组初始华" onclick="txt.innerHTML = array_init()"><br>
<input type="button" value="传统循环" onclick="txt.innerHTML += method_for()">
<input type="button" value="正则匹配" onclick="txt.innerHTML += method_regexp()">
<div id="txt"></div>
<SCRIPT LANGUAGE="JavaScript">
var txt = document.getElementById("txt");
var a = new Array();
function array_init()
{
var n = parseInt(document.getElementById("count").value);
a.length = 0;
for(var i=0; i<n; i++)
{
a[i] = Math.random() +"";
}
return "数组长度:"+ n;
}
function method_for()
{
var n = a.length;
var begin = new Date().getTime();
var b = new Array();
for(var i=0; i<n; i++)
{
if(a[i].indexOf("0.9999")==0)
{
b[b.length] = a[i];
}
}
return ("<br>传统循环法耗时 "+ (new Date().getTime() - begin)
+" 毫秒!检索的结果:<strong title='"+ b.join("
")
+"'>检索到 "+ b.length +" 个记录!</strong>");
}
function method_regexp()
{
var begin = new Date().getTime();
var b = new Array();
var s = a.join("\x0f");
var r = new RegExp().compile("0\\.9999\\d+", "g");
b = s.match(r);   s = "";
return ("<br>正则匹配法耗时 "+ (new Date().getTime() - begin)
+" 毫秒!检索的结果:<strong title='"+ b.join("
")
+"'>检索到 "+ b.length +" 个记录!</strong>");
}
</SCRIPT>
问题:
当在IE中运行的时候,正则检索很快
当在FireFox中运行的时候,结果相反,遍历数组很快,而正则还没有在IE中遍历数组的方法快
朋友们有兴趣的试试,讨论一下IE中和FireFox中遍历数组和正则各是怎么一回事 

posted on 2009-08-27 11:25 星期五 阅读(500) 评论(0)  编辑  收藏 所属分类: web 开发


只有注册用户登录后才能发表评论。


网站导航: