数组(Array)

首页 > JavaScript基本对象 > 数组(Array)

目录

■ 一览

Array(), concat(), join(), length, reverse(), slice(), sort()

■ 数组

array = new Array()
array = new Array(n)
array = new Array(e1, e2, ...)

生成拥有 n 个元素的数组,或是以 e1, e2, ... 等元素组成一个数组。数组的下标从 0 开始。n 可以省略。可以像下面这样给超过 n - 1 下标的元素赋值,此时数组会自动改变长度。

xx = new Array(3);
xx[0] = "Sun";
xx[1] = "Mon";
xx[6] = "Sat";    // 给xx[6]赋值的同时,数组的长度自动变成7(下标0~6)
yy = new Array("Sun", "Mon", "Thu");
alert(yy[0] + yy[1] + yy[2]);

JavaScript里也可以使用二维数组。

xx = new Array(3);
for (i = 0; i < xx.length; i++) {
    xx[i] = new Array(4);
    for (j = 0; j < xx[i].length; j++) {
        xx[i][j] = i * 10 + j;
    }
}
alert(xx[2][3]);

数组的下标也可以用字符串。

xx = new Array();
xx["Sun"] = "Sunday";
xx["Mon"] = "Monday";
alert(xx["Sun"]);

查询数组里有没有指定下标的元素,使用 in 。

xx = new Array();
xx[0] = "AAA";
xx[1] = "BBB";
xx[2] = "CCC";
if (1 in xx) { /* 执行代码 */ }

删除数组中的元素使用 delete 。在下面的例子里,xx[1] 被删除后变成 undefined ,xx[0] 和 xx[2] 不变。

xx = new Array(3);
xx[0] = "AAA";
xx[1] = "BBB";
xx[2] = "CCC";
delete xx[1];

用 delete 删除的话,元素本身将被删除。而如果把 undefined 赋值给某个元素的话,此元素不会消失。

xx[1] = undefined;
if (1 in xx) { /* 执行代码 */ }
delete xx[1];
if (1 in xx) { /* 不执行代码 */ }

■ 数组的长度

array.length

要取得数组的长度,可以使用 length 属性。

for (i = 0; i < xx.length; i++) {
    alert(xx[i]);
}

把 length 赋值为 0 的话,数组的所有元素都将被删除。

xx.length = 0;

■ 数组的结合

array.concat(array2, ...)

返回数组 array 与数组 array2 结合后的数组。参数可以是复数个数组。

xx = new Array("Sun", "Mon", "Tue", "Wed");
yy = new Array("Thu", "Fri", "Sat");
zz = xx.concat(yy);     // zz 的元素为从 "Sun" 到 "Sat"
array.join([separator])

返回数组 array 的各元素用 separator 连接而成的字符串。省略 separator 的时候默认值为逗号(,)。数组 array 本身不变。

xx = new Array("2000", "12", "31");
yy = xx.join("/");     // 字符串 yy 的值为 "2000/12/31"

■ 数组元素的取得

array.slice(start [, end])

从数组 array 中抽出第 start 个元素到第 end - 1 个元素,作为新数组返回。省略 end 则一直取到最后一个元素。数组 array 本身不变。

■ 数组的排序

array.sort([func])

将数组 array 按字母顺序对元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。array 本身将改变。如果想按照其他标准进行排序,就需要提供比较函数 func(可选项,必须是函数)。该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

xx = new Array(3, 7, 8, 1);
xx.sort();
alert(xx);

function bijiao(a, b) { return(b - a); }
yy = new Array(3, 7, 8, 1);
yy.sort(bijiao);
alert(yy);
array.reverse()

颠倒数组 array 中元素的顺序。array 本身将改变。

xx = new Array(1, 2, 3, 4);
xx.reverse();
alert(xx);