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

简介:

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

厚积薄发,希望每一篇文章都能对大家有所帮助(真希望每一篇都是精品,可惜水平有限啊),由于我也是初学者,文中的东西可能比较适合新手,如果有错误,请告知,谢谢。
如何让你的程序运行的更快(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 array = []; 二者等价 
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  =   "" ;    // 用于输出 


// 我们需要检索出值为 Majianan 的元素,通常做法如下: 
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:555555555dot.gifdot.gif \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:555555555dot.gifdot.gif \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:555555555dot.gifdot.gif \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)。
所有代码:

ContractedBlock.gif 

 本文转自BlogJavaOo缘来是你oO的博客,原文链接:如何让你的程序运行的更快 (2)--- JavaScript中的数组之字符串下标的运用,如需转载请自行联系原博主。

相关文章
|
1天前
|
JavaScript 数据处理 索引
js字符串截取
js字符串截取
17 6
|
1天前
|
JavaScript 前端开发
如何在JS中声明一个数组
如何在JS中声明一个数组
7 0
|
6天前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
14 3
|
6天前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
13 3
|
13天前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
2天前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
|
12天前
|
JavaScript 前端开发 C++
JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方
JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方
|
12天前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
12天前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
79 2