存储大量数量(数组对象)
当你要存储大量相关的数据时,你可能会用到数组。你可以把任何类型的数据的集合存储在一个数组中,你甚至可以建立一个对象数组。
在阅读本节之后,你应当不会感到惊奇数组在JScript中也是个对象。你可以象任何其他类型的对象一样用new语句来建立一个数组对象。下面是个例子:
<%
myarray=new Array(10);
myarray[0]=“Running Shoes”;
myarray[2]=“Fishing Rod”;
myarray[9]=“Sailing Boat”;
%>
<%=myarray[9]%>
在此例中,建立了一个含10个元素的名为myarray的数组。JScript中的所有数组元素编号都是0开始的,因此在这种情况下,第一个元素是0最后一个是9。
紧接着建立数组语句后的三条语句为数组中不同的元素赋值,第一条语句为第一个数组元素赋值为“Running Shoes”。
你可以使用数组元素的索引号来获得数组的值,这个脚本中的最后一条语句输出数组中第9个元素的值,文本Sailing Boat被显示在浏览器口上。
你也可以在创建数组时为其赋值,要实现这一点只需用逗号分隔各个元素的值就可以了,象下面所示:
<%
myarray=new Array(“Running Shoes”,“Fishing Rod”,“Sailing Boat”);
%>
<%=myarray[2]%>
这个脚本创建的数组与上例中的那个完全一样,然而这个数组的元素是连续排列的。例如,要取得第三个元素的值,你必须用它的索引号2。
存储在数组中的值不要求是同一类型的。例如,你可以在同一数组中存储字符串和数字。象下面所示:
<%
myarray=new Array(“Andrew Jones”,7,884,“John Pyrovolakis”);
%>
在此例中,建立的数组对象中存储了两个字符串和两个数字,这不会产生错误。你可以用通常的方法来引用某一个数组元素。
改变数组的大小
建立了数组对象以后,你可以使用它的length属性来决定它的大小。length属性的值指明了数组中元素的个数。下面是个例子:
<%
myarray=new Array(“Running Shoes”,“Fishing Rod”,“Sailing Boat”);
%>
<%=myarray.length%>
当执行这个脚本时,返回值是3。
你可以改变一个数组对象的length属性。你可以通过为length属性指定一个不同的整数值来使数组变大或是变小。你可用下面的方法来改变数组的大小:
<%
myarray=new Array(10);
myarray.length=5; //makes array smaller
myarray.length=20; //makes array larger
%>
如果你将一个数组变大,新元素的值是不确定的。如果你将一个数组变小,失去的数组元素将永远失去了。
多维数组
使用JScript 你不能建立多维数组。JScript 中的所有数组对象都是一维的,有时这是很不方便的,有时你需要创建多维数组。在JScript中怎样实现这一点呢?
假设你要建立一个数组来存储用户名及他们的密码,这是一个应用二维数组的很好例子。你需要对两种数据都能索引,每个参观你网点的用户都有一个用户名和密码。
很幸运,你可以建立一个数组的数组,一个数组对象的元素值可以是另一个数组对象。通过建立数组的数组,在效果上你就建立了一个多维数组。下面的例子说明了如何去做:
<%
myarray=new Array(10);
myarray[0]=new Array(1);
myarray[1]=new Array(1);
myarray[0][0]=“Andrew Jones”;
myarray[0][1]=“Dodgy”;
myarray[1][0]=“John Pyrovolakis”;
myarray[1][1]=“Godel”;
%>
在此例中建立了一个简单的数组的数组,数组对象Myarray首先被建立了,然后它的两个元素被赋于新的数组对象,一旦这个通过多个一维数组对象建立的二维数组创建以后,你就可以象对待二维数组一样来对待这它。在此例中,这个数组存贮了两个用户的名字和他们的密码。
数组方法
JScript数组对象有三个方法。你可以使用这些方法来处理数组中元素的位置以及将数组中多个元素组合成单个字符串。下面的例子说明了怎样使用reverse()方法:
<%
myarray=new Array(2);
myarray[0]=“I am the first element”;
myarray[1]=“I am the second element”;
myarray.reverse()
%>
<%=myarray[0]%>
<BR>
<%=myarray[1]%>
在此例中,建立了一个具有两个元素的数组。每个元素都被赋于字符串值。然后数组元素通过reverse()方法被颠倒了。reverse()方法颠倒数组元素的索引次序。这个脚本的输出如下所示:
I am the second element
I am the first element
如果你想把数组中所有元素合并成单个字符串,你可以使用join()方法,这个方法不需要任何参数,它合并所有的数组元素,每个元素之间用逗号分隔开,下面是个例子:
<%
myarray=new Array(“John”,“Paul”,“George”,“Ringo”)
mystring=myarray.join()
%>
<%=mystring%>
当执行这个脚本时,变量mystring的值是“John,Paul,George,Ringo”,你也可以用分隔符来代替逗号。只需将你想使用的分隔符传给join()方法。象下面所示:
<%
myarray=new Array(“John”,“Paul”,“George”,“Ringo”)
mystring=myarray.join(“*”)
%>
<%=mystring%>
当运行这个新的脚本时,变量mystring被赋于“John*Paul*George*Ringo”,你需要的分隔符可以不是单个字符。你可以使用任意长度的字符串。
数组对象的最后一个方法可能是这三者中最有用的。使用sort()方法,你可以排序数组中的元素,这个方法不需要任何参数,它按照字母序将数组中的元素排序,来看下面的例子:
<%
myarray=new Array(“John”,“Paul”,“George”,“Ringo”)
myarray=sort()
%>
<BR> <%=myarray[0]%>
<BR> <%=myarray[1]%>
<BR> <%=myarray[2]%>
<BR> <%=myarray[3]%>
当执行这个脚本时,下面的值将会被输出:
George
John
Paul
Ringo
你也可以使用sort方法来完成较复杂的排序工作,要做到这一点,你必须向这个方法传递一个指明按照何种规则进行排序的函数。如下面的例子:
<%
function mysort(myvar1,myvar2)
{
var choice=Math.round(Math.random());
if (choice==1) {return –1} else return 1;
}
myarray=new Array(“John”,“Paul”,“George”,“Ringo”)
myarray.sort(mysort)
%>
<BR> <%=myarray[0]%>
<BR> <%=myarray[1]%>
<BR> <%=myarray[2]%>
<BR> <%=myarray[3]%>
在此例中,数组元素随机地排序,每次执行脚本时,都以不同的顺序输出名字。函数mysort()完成实际的排序工作,这个函数被传给了myarray数组对象的sort()方法。
任何你传给sort()方法的排序函数必须接受两个参数,这两个参数是待比较的两个数组元素,如果函数返回一个负数,第一个参数表示的元素就会排在第二个参数表示的元素之前;如果函数返回一个正值,第二个元素就排在第一个之前。最后,如果函数返回零,这两个元素的次序不变。