|
JavaScript使用数组
数组下标 javascript 中的数组是稀疏的。也就是说,如果一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。如果该数组有一个自动的 length 变量,该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不过没有必要这样做。实际上在 javascript 中,数组根本没有编号的下标。
在 javascript 中,对象和数组实质上是一样的。真正的差异不在于数据,而在于您引用数组的成员或对象的属性 和 方法的方式。
数组寻址 有两种方式来引用数组中的成员。一般说来,可以使用方括号来引用数组。方括号中是一个数字或一个值为非负整数的表达式 。下面的示例假定在脚本的其他地方已定义了entryNum 变量,且已赋值。
theListing = addressBook[entryNum]; theFirstLine = theListing[1];
这种寻址方法与对象寻址的方法是等价的,不过在对象寻址中在圆点后必须使用实际的属性名。如果没有这样的属性,代码将产生一个错误。
数组寻址的第二种方式是制作一个包含编号属性的对象/数组,然后用一个循环产生这些编号。下面的示例将产生两个数组:一个代表名字,一个代表地址,名字和地址均来自 addressBook 中的一个列表。每一项包含四个属性。例如,从theListing的 [Name1] 到 [Name4] 属性产生的theName实例可能包含 "G." "Edward" "Heatherington" "IV", 或 "George" "" "Sand" ""。
theListing = addressBook[entryNum]; for (i = 1; i < 4; i++) { theName[i] = theListing["Name" + i]; theAddress[i] = theListing["Address" + i]; }
虽然这个特定的实例很短,并且可以很容易地使用 "."这种记法来表示(也就是按地址而不是按数组来对 theListing、theName和 theAddress 寻址),但这并不总是可行的。有时特定的属性可能要在运行时才会存在,或者预先并不知道将是哪些项。例如,如果addressBook 数组不是编好号码的清单,而是按姓排列的,用户可能在正在运行该脚本时“随意”输入名称来查找人员。下面的实例假定在脚本的其他地方已提供了适当的函数定义。
theListing = addressBook[getName()]; theIndivListing = theListing[getFirstName()];
这是数组的关联寻址,也就是说,依靠完全任意的字符串来寻址。javascript 中的对象实际上就是关联数组。尽管可以(并且是频繁地〕使用 "."这种圆点寻址风格,但无论如何不是必需的。因为 javascript 对象的任何属性都可以使用数组标记法来寻址,因此 javascript 对象可以作为一个关联数组使用。
下面的代码创建并初始化数组的最常见格式:
var myArray = new Array("Athens", "Belgrade", "Cairo");
该数组的每个元素都是使用其元素编号来寻址的;在本例中是 0、1 或 2。使用 for...in 语句,该数组可以从 0 开始到 2 结束来进行遍历。例如:
for (key in myArray) response.write("Element value is " + MyArray[key] + "<BR>);
下面的代码创建并初始化一个包含三个元素的关联数组:
var MyArray = {"a" : "Athens", "b" : "Belgrade", "c" : "Cairo" };
在该数组中,可以使用字符串("a"、 "b" 或 "c") 来对元素寻址,而不是用数组元素的编号 (0、1 或 2)寻址。这样就可以以更直观的寻址方案来创建和使用数组。同样可以使用上面显示的 for...in 语句代码来遍历该数组。
2005-10-26 17:20:27
Posted by jser | 阅读全文() | 回复(0) | 引用通告() | 编辑
|