Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用
【标  题】:如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用
【关键字】:---,JavaScript
【来  源】:http://www.blogjava.net/majianan/archive/2006/11/09/80184.html

如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用

Your Ad Here 如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用 - Oo缘来是你oO - BlogJava
Oo缘来是你oO


人本是人,不必刻意去做人;世本是世,无须精心去处世;自然的才是快乐的。

posts - 99,comments - 78,trackbacks - 0

?????????? 如何让你的程序运行的更快 (2)--- JavaScript中的数组字符串下标的运用
??????????????????????????????????????????????????
???????????????????????????????????????????????????????
马嘉楠 2006-11-09


序:

好久没有写这个系列的文章了,不知道还有没有人等我的下文。哈哈,臭美一个。

在学习的过程中,好几次都准备写了,可是每次动笔的时候总会想,这个东西写出来有意义么?如果是人所共知唯独我不知道的,就算写出来对大家也没什么帮助,只能算是我的学习笔记罢了,放在这个下面显然不合适。

厚积薄发,希望每一篇文章都能对大家有所帮助(真希望每一篇都是精品,可惜水平有限啊),由于我也是初学者,文中的东西可能比较适合新手,如果有错误,请告知,谢谢。

如何让你的程序运行的更快(1) 中,讲了Java 中的 String StringBuffer,这里又跳到 JavaScript Array,呵呵,学到哪,就写到哪吧。



正文:

今天在看到 JavaScript 中 Array 这一部分的时候,发现字符串也可以作为数组的下标,以前还真不知道,孤陋寡闻。。。。
既然提供了这个特性,那么就有它的存在价值,我们来看看有什么用,欢迎大家补充。

首先,Array 是从 Object 继承下来,所以 Array 具有 Object 有的任何能力。看看Object作为集合的情况:

新建: var ?object? = ? new ?Object();?或? var ?object? = ?{};
增加: object[strIndex?]?
=
?value;?(strIndex?为string)
删除:
delete
?object[strIndex?];
遍历:
for ?(? var ?strObjIndex? in ?object?)?object[strObjIndex?];?

code 1:

var ?object? = ?{};??? // var?object?=?new?Object();?二者等价
object[ " First " ]? = ? " Firstmm " ;
object[
" Second " ]? = ? " Secondmm "
;
object[
" Third " ]? = ? " Thirdmm "
;
delete ?object[ " Second "
];?

for ?(? var strObjIndex in
object?)
??? alert(
" strObjIndex?= "?+ strObjIndex?+?"\nobject["?+strObjIndex?+ "]?=?"+
object[strObjIndex]);?


除了我们熟悉的方法外,Array也是可以用字符串做下标,像code 1 中的 Object 一样。

code 2:

var ?array? = ? new ?Array();??? // var?arrayTest?=?[];?二者等价
array[ " First " ]? = ? " Firstgg " ;
array[
" Second " ]? = ? " Secondgg "
;
array[
" Third " ]? = ? " Thirdgg "
;?
delete ?array[ " First "
];?

for ?(? var ?strArrayIndex? in
?array?)
??? alert(
" strArrayIndex?=? "?+?strArrayIndex?+?"\narray["?+strArrayIndex?+?"]?=?"?+ array[strArrayIndex]);?


在某些情况下,用字符串做下标可以提高我们的访问效率,
例如我们要在Array中检索出一个指定的值,通常做法,我们需要遍历整个数组,如下:

code 3:

var ?arrayTest? = ? new ?Array();??? // var?arrayTest?=?[];?二者等价
//
初始化arrayTest
arrayTest.push( " Blog " );?????????? // arrayTest[0]?=?"Blog";?二者等价
arrayTest.push( " Java " );
arrayTest.push(
" MaJianan "
);

var ?output? = ? "" ;??? // 用于输出


// 我们需要检索出值为?Second?的元素,通常做法如下:
for ( var ?i = 0 ;?i < arrayTest.length;i ++ ){
??? if (arrayTest[i] == " MaJianan "
){
??????? output?
= ? " 用整数做下标的Array:哈哈!?^+^?\n "
;
??????? output?
= ?output? + ? " " ? + ?i? + ? " 次才找到\n "
;
??????? output?
= ?output? + ? " arrayTest[ " ? + ?i? + ? " ]?=? " ? +
?arrayTest[i];
??????? alert(output);
??? }
else
{
??????? output?
= ? " 用整数做下标的Array:555555555?\n "
;
??????? output?
= ?output? + ? " " ? + ?i? + ? " 次没有找到\n "
;
??????? output?
= ?output? + ? " 找到的是arrayTest[ " ? + ?i? + ? " ]?=? " ? +
?arrayTest[i]
??????? alert(output);
??? }
}


code 4:

// 使用字符串做数组下标
var ?arrayTest1? = ?[];
arrayTest1[
" blog " ]? = ? " Blog "
;
arrayTest1[
" java " ]? = ? " Java "
;
arrayTest1[
" majianan " ]? = ? " MaJianan "
;?

var ?key = " majianan "
;?

if ( typeof (arrayTest1[key]) == " undefined "
){
??? output?
= ? " 用字符串做下标的Array:555555555?\n "
;
??? output?
= ?output? + ? " 没找到下标为 " ? + ?key? + ? " 的东东。\n "
;
??? output?
= ?output? + ? " 明明没有这个东西,还让我找,耍我呢吧!!! "
;
??? alert(output);
??? // do?sth

} else {
??? output?
= ? " 用字符串做下标的Array:哈哈!?^+^?一次搞定\n "
;
??? output?
= ?output? + ? " 找到arrayTest1[ " ? + ?key? + ? " ]?=? " ? +
?arrayTest1[key];
??? alert(output);
??? // do?sth

}?

var ?key1 = " hello "
;?

if ( typeof (array[key1]) == " undefined "
){
??? output?
= ? " 用字符串做下标的Array:555555555?\n "
;
??? output?
= ?output? + ? " 没找到下标为 " ? + ?key1? + ? " 的东东。\n "
;
??? output?
= ?output? + ? " 明明没有这个东西,还让我找,耍我呢吧!!! "
;
??? alert(output);
??? // do?sth

} else {
??? output?
= ? " 用字符串做下标的Array:哈哈!?^+^?一次搞定\n "
;
??? output?
= ?output? + ? " 找到arrayTest1[ " ? + ?key1? + ? " ]?=? " ? +
?arrayTest1[key1];
??? alert(output);
??? // do?sth

}?


Array的这个特性(用字符串做下标)可以用来高效的检索Unique的字符串集合。
遍历用整数做下标的Array的时间复杂度是O(n),而遍历用字符串做下标的Array的时间复杂度是O(1)。



所有代码:

?

posted on 2006-11-09 16:44 马嘉楠 阅读(144) 评论(0)  编辑 收藏 引用 收藏至365Key 所属分类: Java Script
【相关评论】
没有相关评论
【发表评论】