JS暴虐查找法

 更新时间:2006年12月22日 00:00:00   作者:  
有过相关经验的朋友都知道,Jscript的效率毕竟有限,在数组中查找数据时如果用常规的算法来做执行起来会很慢。
例如在一个含500个字符串的data数组里,我们想要找到一个指定的字符(key),返回它的数组下标,如果用这样的算法:
[Copy to clipboard]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需再刷新一下页面才能执行]

相关文章

  • javascript学习(二)javascript常见问题总结

    javascript学习(二)javascript常见问题总结

    在js使用过程中,经常会碰到一些问题,本人利用闲暇时间整理了一些常见问题的解决方法,贴出来和大家分享,有需要的朋友可以参考下
    2013-01-01
  • Javascript 布尔型分析

    Javascript 布尔型分析

    今天在做景德镇的企业等级功能的时候,遇到一个很有趣的问题。在一个jsp页面里,我需要把一个java的字符串转为js的布尔型。
    2008-12-12
  • 前端 el-table 本地搜索的实现代码

    前端 el-table 本地搜索的实现代码

    这篇文章主要介绍了前端 el-table 本地搜索的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • js获取height和width的方法说明

    js获取height和width的方法说明

    js获取height和width属性的值在日常开发中很常见,于是本人搜集整理了一下,感兴趣的朋友可以参考下
    2013-01-01
  • Javascript基础教程之if条件语句

    Javascript基础教程之if条件语句

    这篇文章主要介绍了Javascript基础教程之if条件语句,需要的朋友可以参考下
    2015-01-01
  • JS键盘的键码(event.keyCode)图片版

    JS键盘的键码(event.keyCode)图片版

    js获取键盘按键的键码event.keyCode,下面则是键盘的键码分布,记录一下,以备不时之需
    2013-01-01
  • JavascriptES6新特性之map和reduce详解

    JavascriptES6新特性之map和reduce详解

    这篇文章主要为大家详细介绍了ES6的新特性之map和reduce,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • js作用域及作用域链概念理解及使用

    js作用域及作用域链概念理解及使用

    作用域链是由于js的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是window对象的属性,所以这些对象的关系可以看作是一条链
    2013-04-04
  • JavaScript创建、读取和删除cookie

    JavaScript创建、读取和删除cookie

    通过本文你将粗略的明白cookie是什么,如何通过js创建/存储以及获取cookie,如何让cookie过期来删除cookie
    2019-09-09
  • 解析JavaScript中的字符串类型与字符编码支持

    解析JavaScript中的字符串类型与字符编码支持

    JavaScript中的字符串也像Python那样支持反斜杠的转移,并且字符集方面默认为Unicode,下面就来详细解析JavaScript中的字符串类型与字符编码支持
    2016-06-06

最新评论