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