JScript Array 对象

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,这时可以存在元素 50,而元素 3 到 49 不存在。 当您添加元素到 Array 对象时,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 对象

其他资源

内部对象