`
wanxiaotao12
  • 浏览: 456116 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript中的数组之字符串下标

 
阅读更多

今天在看到 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: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)。

 

转:http://www.blogjava.net/majianan/archive/2006/11/09/80184.aspx

分享到:
评论

相关推荐

    javaScript array(数组)使用字符串作为数组下标的方法

    主要介绍了javaScript array(数组)使用字符串作为数组下标的方法,大家可以测试一下看看

    Asp与JS的数组和字符串下标介绍

    数组都是从0开始。javascript是arrayname[i],而vbscript是arrayname(i),javascript的字符串还是从0开始,asp的字符串下标从1开始

    javascript中数组(Array)对象和字符串(String)对象的常用方法总结

    本文实例总结了javascript中数组(Array)对象和字符串(String)对象的常用方法。分享给大家供大家参考,具体如下: 综述:笔者经常将数组的方法和字符串的方法混淆,这里写篇日志,做个区分 1.字符串对象 String是...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 ...

    javascript的数组和常用函数详解

    数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象。Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能。 1.1 定义...

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    将数组元素连接为字符串.asp 构造制定字符串.asp 正向截取字符串.asp 正向查找字符串.asp 获取字符串长度.asp 第13章(/14/) Matches集合与Macth对象.asp ...

    JavaScript中的索引数组、关联数组和静态数组、动态数组讲解

    数组分类: 1、从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8];...//存取时,以非序数(数字),这里是字符串 ary2[“one”] = 1; ary2[“two”]

    JavaScript数组特性与实践应用深入详解

    JavaScript 提供了一种类似数组特性的对象,它把数组的下标变为字符串,作为对象的属性。虽然它比一个真正的数组来的慢,但是使用起来很方便。 1 数组字面量 数组字面量是在一对方括号中包围零个或多个用逗号分隔的...

    JavaScript中的关联数组问题

    代码如下: var beatles = [“john”,”Paul”,”George”,”Ringo”]; 上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个...你也可以使用字符串: 代码如下: var lennon = Array(); lennon[“name

    javascript开发技术大全-第3章 js数据类型

    字符串类型(string) :由unicode字符、数字、标点符号组成,在javascript中没有char字符类型 ,即使只表示一个字符,也必须用到字符串 2数字型(number):不区分整型和浮点型 3.布尔型(boolean) 3.2复合数据类型 1....

    Javascript的常规数组和关联数组对比小结

    首先我们看看数组的分类: 从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下... //存取时,以非序数(数字),这里是字符串 ary2[“one”] = 1; ary2[“two”] = 2; ary2[“thr”] = 3; ary2

    javascript入门笔记

    Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...

    Javascript中的Array数组对象详谈

    //这里注意myArray数组中的元素不只是同一种数据类型的元素,可以有整形,有浮点型,有字符串等等都可以。这里充分展示了javascript作为一种语言对数据类型的弱化,语言更加的随意化,简便化。就行定义对象的时候用...

    程序天下:JavaScript实例自学手册

    14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...

    《程序天下:JavaScript实例自学手册》光盘源码

    14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...

    JavaScript笔记

    |--1.join()方法--用于把数组中的所有元素放入一个字符串 | eparato表示要使用的分隔符。如果省略该参数,则使用逗号作为分隔符 |--2.toString()方法--可把数组转换为字符串,并返回结果 |--3.concat()方法--...

    Javascript中的Split使用方法与技巧

    起先我还用asp中的思维在考虑怎么得到myArray的最大下标呢,肯定不是Ubound(myArray),找了半天没找到,最后知道了,其实在Javascript中数组都有一个length属性,myArray.length-1也就是myArray数组的最大下标,很...

    《javaScrip开发技术大全》源代码

    • sample39.htm 执行字符串中的JavaScript代码 • sample40.htm 判断对象属性是否为自有属性 • sample41.htm 判断一个对象是否是另一个对象的原型对象 • sample42.htm 判断对象...

    LeetCode去除数组重复元素-leetcode_[removed]刷题

    编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。 Valid Parentheses(有效的括号) 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串...

Global site tag (gtag.js) - Google Analytics