JScript Array 对象

更新:2007 年 11 月

Array 对象是一个变量,它可以将相关的数据片段组合起来。一个唯一的数字(称为索引或下标)引用数组中的每一段数据。若要访问存储在数组中的数据,应使用索引运算符“[]”将数组标识符和索引组合起来,如 theMonths[0]。

创建数组

若要创建新的数组,可使用 new 运算符和 Array 构造函数。在本示例中,使用数组构造函数构造一个长度为 12 的数组。然后将数据输入到该数组中。

var theMonths = new Array(12);
theMonths[0] = "Jan";
theMonths[1] = "Feb";
theMonths[2] = "Mar";
theMonths[3] = "Apr";
theMonths[4] = "May";
theMonths[5] = "Jun";
theMonths[6] = "Jul";
theMonths[7] = "Aug";
theMonths[8] = "Sep";
theMonths[9] = "Oct";
theMonths[10] = "Nov";
theMonths[11] = "Dec";

当使用 Array 关键字创建数组时,JScript 将一个 length 属性包括进去,该属性记录项的数目。如果不指定一个数字,则长度设置为零,数组就没有任何项。如果指定一个数字,则长度就设置为该数字。如果指定多个参数,则这些参数就用作数组中的各项。此外,参数的个数要赋给长度属性,如下面的示例所示,此示例同前面的示例是等效的。

var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", 
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

数组文本提供了在数组中输入数据的另一种技术。有关更多信息,请参见数组数据

Array 对象存储“稀疏”数组。即,如果某个数组有 3 个元素,编号为 0、1 和 2,那么即使不存在元素 3 到 49,也可以有元素 50。当您添加元素到 即,如果某个数组有 3 个元素,编号为 0、1 和 2,那么即使不存在元素 3 到 49,也可以有元素 50。当您添加元素到 Array 对象时,JScript 自动更改 <legacyBold>length</legacyBold> 属性的值。对象时,JScript 自动更改 length 属性的值。JScript 中的数组索引始终是从 0(而不是 1)开始,因此长度属性总是比数组中最大的索引大 1。

使用数组的 Expando 属性

数组对象像基于 JScript Object 对象的任何其他对象一样,也支持 expando 属性。Expando 属性是可以动态地添加到数组和从数组删除的新属性,类似于数组索引。与数组索引不同的是,数组索引必须是整数,而 expando 属性是字符串。此外,添加或删除 expando 属性并不更改 length 属性。

例如:

// Initialize an array with three elements.
var myArray = new Array("Hello", 42, new Date(2000,1,1));
print(myArray.length); // Prints 3.
// Add some expando properties. They will not change the length.
myArray.expando = "JScript";
myArray["another Expando"] = "Windows";
print(myArray.length); // Still prints 3.

类型化数组

创建如上所示的 theMonths 数组的另一种更快的方法是创建一个类型化(本机)数组,在本例中是一个字符串数组:

var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

访问类型化数组的元素比访问 JScript 数组对象中的元素更快。类型化数组与其他 .NET Framework 语言中的数组相兼容,并提供了类型安全。

JScript Arrays 对象在列表、队列、堆栈等方面是非常灵活而好用的,但本机数组在存储相同类型的固定大小项目时更具优势。一般来说,除非需要 Array 对象的特殊功能(如动态调整大小等),否则应使用类型化数组。

所有非破坏性的 JScript Array 方法(不更改长度的方法)都可以按类型化数组的方式调用。

请参见

参考

Array 对象

其他资源

内部对象