最快的方式
假设我们有一个字符串数组,像这样:最快的方式
var arr = ['qwe', 'rty', 'uio p', 'a', 's df'];
,但更长的时间。和一个字符串,这是用户输入。
因此,每keyup
(下一个字符插入该字符串),我必须检查该字符串是否存在该数组中。
我知道我可以通过每次循环访问数组来完成 - 但是有什么办法可以让它更快吗?
您可以使用indexOf()函数。
var arr = ['qwe', 'rty', 'uio p', 'a', 's df'];
var str= 'rty';
var isPresent = (arr.indexOf(str) > -1);
为了解释: 的indexOf()返回在数组中找到的字符串的索引。如果找不到字符串,则返回-1。 因此... indexOf('qwe')返回0,indexOf('rty')返回1,等等。但是indexOf('foo')返回-1。
这真的很快吗? – k102 2014-08-27 13:59:02
我认为这是你得到的最好的。 – 2014-08-27 13:59:47
@ k102:首先,'它真的很快吗?':[检查你自己:JSPerf.com](http://jsperf.com/);第二,你真的需要多快? – 2014-08-27 14:02:12
使用IndexOf()
:
var arr = ['qwe', 'rty', 'uio p', 'a', 's df'];
arr.indexOf('a'); // returns 3
arr.indexOf('aaa'); // returns -1
'arr.indexOf(输入)> -1' – Mritunjay 2014-08-27 13:59:09
使用数组,你不能得到比线性更好。你需要某种形式的树/表或其他索引数据结构才能进入'O(n)' – blgt 2014-08-27 14:01:41