文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
网站工程
 规划发展   网页美工   标记语言   网页编程   Web服务器   广告攻略   开发常识   趋势研究   网站维护   网站数据库   网页设计工具
 论坛
您现在的位置: IT文谷 >> 网站工程 >> 网页编程 >> JavaScript >> 文章正文
[奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法
[奇招] JS暴虐查找法
[奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法
[奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法

有过相关经验的朋友都知道,Jscript的效率毕竟有限,在数组中查找数据时如果用常规的算法来做执行起来会很慢。

例如在一个含500个字符串的data数组里,我们想要找到一个指定的字符(key),返回它的数组下标,如果用这样的算法:

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

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

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

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

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

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

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

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

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

Jscript示例程序:

运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

不应该忽略的是:是脚本执行非内置算法代码的低效率使得这个JS暴虐查找法有意义。

经典论坛讨论:
http://bbs.blueidea.com/viewthread.php?tid=2455812

[奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    进阶:学习As2.0与AS3.0的尴尬
    Flash特效制作常用的源代码大放送
    Flash AS3 相对于AS2 新的特性和改动
    用Flash影片剪辑复制做“鼠标跟随”特效
    Flash常用ActionScript控制语句基本用法
    自己动手制作手机Flash主题动画
    浅释Flash ActionScript代码优化原则
    将数码照片做成自动放映的Flash
    浅释ActionScript的代码优化
    FLASH制作网站过程详细规划
    让手机也“闪”起来!Flash Lite 2 新功能介绍
    精彩实例详解:用Flash实现北京奥运倒计时
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    [奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法
    [奇招] JS暴虐查找法[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法2006-8-11 23:59:48[奇招] JS暴虐查找法

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号