Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->网站设计 ->JavaScript ->正文

javascript暴虐查找数据法

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-13 点击: [收藏] [投稿]

  有过相关经验的朋友都知道,Jscript的效率毕竟有限,在数组中查找数据时如果用常规的算法来做执行起来会很慢。
  例如在一个含500个字符串的data数组里,我们想要找到一个指定的字符(key),返回它的数组下标,如果用这样的算法:

CODE:
function usual_search(data,key)
{
var m=data.length
for(i=0;i{if(data[i]==key)return i}
}

由于需要做多次的比较,运算起来会相当的慢。

  本主题要介绍的是一种充分利用Jscript内置方法来实现在数组中查找数据的方法,由于借助Jscript内置方法,其效率要远优于上述常规算法。为了(诙谐|唬人)起见,我命其名为“JS暴虐查找法”。

  这种查找法对于数组元素有一个要求:就是数组元素的内容不得包含半角逗号(,)及我们指定的某一个代置符号(例如,在下面的示例中,我们指定代置符号为一个制表符“┢”)。在事先构建、维护数组时要注意满足这一要求。

       JS暴虐查找法的思路是非常简单的,原则只有一个,就是要“充分利用Jscript内置方法”:

        我们首先利用 Array 对象的 toString() 方法产生一个包含数组元素的字符串,在这个字符串中各数组元素由半角逗号(,)分隔的,所以我们事先要求数组元素的内容不得包含半角逗号。

        随后利用 String 对象的 replace() 方法把这个字符串中所包含的我们要找的关键字符串替换成我们指定的一种特殊符号(代置符号),一般选择一个不常用的字符来充当代置符号,在下面示例中我使用了一个制表符(┢),只要是能够确保不会在数组元素中出现的符号都可以充当代置符号。

       接下来就是我们最暴虐的一步了,还是用 replace() 方法,去除半角逗号(,)和代置符号(┢)以外的所有字符。统统去干净以后这个字符串就变成了一串半角逗号之中包含着一个代置符号(这模样:,,,,,,,,,,,,,,,,┢,,,,,,,,,)。

       最后,用 String 对象的 indexOf() 方法返回代置符号在这个字符串中的位置,而这个位置恰恰也就是在原来数组中的数组下标。

Jscript示例程序:


Data:http://www.blue1000.com/bkhtml/c117/" title="Word教程">word readonly value="就在,你的,目光,尽头,,懵懂,的天,使单,纯如,旧,挣,扎着,不肯,涉入,俗流,,鸿鹄,借走,了他,的翅,膀,可,有谁,能助,他,飞翔?" size=120>

key:http://www.blue1000.com/bkhtml/c117/" title="Word教程">word readonly value="鸿鹄">





 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇: Java中的常用语言   下一篇: 实用的Javascript类库表格排序

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号