有过相关经验的朋友都知道,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暴虐查找法有意义。
分享到:
相关推荐
js 权威指南 js快速查找手册
在JSP中把用户输入的中文转换成大写或者小写的拼音,这样可以避免很多中文提交乱码问题,使用方法很简单,直接调用JS的函数就可以返回拼音
本文实例讲述了JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法。分享给大家供大家参考,具体如下: 实现效果: 图一: 图二: 此例中输入的中文字符串“万万保重”,有三个字是多音字,...
本文实例讲述了php快速查找数据库中恶意代码的方法。分享给大家供大家参考。具体如下: 数据库被输入恶意代码,为了保证你的数据库的安全,你必须得小心去清理。有了下面一个超级方便的功能,即可快速清除数据库恶意...
现在有了这款可以发条js调试工具,你就可以快速打开js文件并对js代码进行调试,可以对js代码进行压缩、查找、解密、格式化等操作。并提供给了JavaScript速查手册,帮助用户轻松调试js代码。 发条js调试工具使用...
Eustia是一个用于生成JavaScript函数库的工具。它能够扫描代码实时生成只包含所需方法的函数库。目前默认函数库除了underscore中使用较多的each、template等函数外,还包含类创建、cookie操作、Dom操作、日期格式化...
calcupH_js是pH值,pOH H +和OH-的计算器,您可以使用henderson hasselbalch方法查找含盐或仅含摩尔的pH值,而Ka或Kb则面向西班牙语用户,因为西班牙语中的这种回声被设计为在javascript中能够处理一个不错的界面 ...
3.46 查找两段文本中相同的词句 3.47 自动保存网页输出的文本 3.48 文本编辑器 第4章 鼠标特效 4.1 禁用鼠标右键 4.2 使鼠标滚轮失效 4.3 状态栏显示鼠标位置 4.4 点击鼠标右键到指定页 4.5 鼠标放到图片上会显示...
当访问一个对象的属性或方法时,如果对象本身没有定义该属性或方法,JavaScript 就会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(null)为止。 原型链图是用于表示 JavaScript 中对象之间原型...
这是一个用引导的项目。 入门 首先,运行开发服务器: npm run dev # or yarn dev 使用浏览器打开以查看结果。...部署Next.js应用程序的最简单方法是使用Next.js创建者提供的。 查看我们的以了解更多详细信息。
3.46 查找两段文本中相同的词句 3.47 自动保存网页输出的文本 3.48 文本编辑器 第4章 鼠标特效 4.1 禁用鼠标右键 4.2 使鼠标滚轮失效 4.3 状态栏显示鼠标位置 4.4 点击鼠标右键到指定页 4.5 鼠标放到图片上会显示...
天气仪表板天气仪表板可从OpenWeatherAPI获取信息,并根据用户城市搜索将其显示在屏幕上。 在搜索城市时,会向您显示该城市的当前和将来条件,并且还将该城市添加到搜索历史中。 查看该城市的当前天气状况时,会显示...
取变量类型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 document.getElementsByName("r1"); document.getElementById(id); 定时 timer=setInterval...
Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...
它提供快速查找 它在处理大量字符串时节省内存 它不保持顺序或索引 有关后缀尝试的更多信息: 可能的应用 白名单或黑名单 大量字符串(例如电子邮件地址) 自动完成(例如标记) 字典(例如 Wordfeud) 文档 ###...
Ajax Anywhere的官方网站提供了相应的Javascript Document,方便快速查找和了解这些API。 1.AjaxAnywhere的初始化 aa.js中定义了一个AjaxAnywhere对象,针对Ajax的各种操作被抽象成AjaxAnywhere对象的方法,通过...
Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...
下面小编就为大家带来一篇js获取json中key所对应的value值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
前缀树,也称为Trie,是一种引人入胜的数据结构,用于以允许快速查找的方式存储字符串或其他序列。 为了专业起见,我们的目标是实现一个能够处理T9样式短信的自动完成功能的prefixTree。 有关此内容的更多信息...