今天在看到 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 ];
增加: 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]);
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[ " 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);
}
}
// 初始化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
}
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(数组)使用字符串作为数组下标的方法,大家可以测试一下看看
数组都是从0开始。javascript是arrayname[i],而vbscript是arrayname(i),javascript的字符串还是从0开始,asp的字符串下标从1开始
本文实例总结了javascript中数组(Array)对象和字符串(String)对象的常用方法。分享给大家供大家参考,具体如下: 综述:笔者经常将数组的方法和字符串的方法混淆,这里写篇日志,做个区分 1.字符串对象 String是...
数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 ...
数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象。Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能。 1.1 定义...
将数组元素连接为字符串.asp 构造制定字符串.asp 正向截取字符串.asp 正向查找字符串.asp 获取字符串长度.asp 第13章(/14/) Matches集合与Macth对象.asp ...
数组分类: 1、从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8];...//存取时,以非序数(数字),这里是字符串 ary2[“one”] = 1; ary2[“two”]
JavaScript 提供了一种类似数组特性的对象,它把数组的下标变为字符串,作为对象的属性。虽然它比一个真正的数组来的慢,但是使用起来很方便。 1 数组字面量 数组字面量是在一对方括号中包围零个或多个用逗号分隔的...
代码如下: var beatles = [“john”,”Paul”,”George”,”Ringo”]; 上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个...你也可以使用字符串: 代码如下: var lennon = Array(); lennon[“name
字符串类型(string) :由unicode字符、数字、标点符号组成,在javascript中没有char字符类型 ,即使只表示一个字符,也必须用到字符串 2数字型(number):不区分整型和浮点型 3.布尔型(boolean) 3.2复合数据类型 1....
首先我们看看数组的分类: 从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下... //存取时,以非序数(数字),这里是字符串 ary2[“one”] = 1; ary2[“two”] = 2; ary2[“thr”] = 3; ary2
Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...
//这里注意myArray数组中的元素不只是同一种数据类型的元素,可以有整形,有浮点型,有字符串等等都可以。这里充分展示了javascript作为一种语言对数据类型的弱化,语言更加的随意化,简便化。就行定义对象的时候用...
14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...
14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...
|--1.join()方法--用于把数组中的所有元素放入一个字符串 | eparato表示要使用的分隔符。如果省略该参数,则使用逗号作为分隔符 |--2.toString()方法--可把数组转换为字符串,并返回结果 |--3.concat()方法--...
起先我还用asp中的思维在考虑怎么得到myArray的最大下标呢,肯定不是Ubound(myArray),找了半天没找到,最后知道了,其实在Javascript中数组都有一个length属性,myArray.length-1也就是myArray数组的最大下标,很...
• sample39.htm 执行字符串中的JavaScript代码 • sample40.htm 判断对象属性是否为自有属性 • sample41.htm 判断一个对象是否是另一个对象的原型对象 • sample42.htm 判断对象...
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。 Valid Parentheses(有效的括号) 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串...