购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 Array对象

数组对象的作用是:使用单独的变量名来存储一系列的值,使用索引来区分它们。

2.2.1 创建和访问数组

创建Array对象语法如下:

如果预先知道数组中将要存储的元素的个数,可以用参数传递数组初始容量大小:

此外,如果知道数组将要存放的元素的值,则可将这些值作为参数来声明,这样将创建初始容量与参数个数相等的数组。如下:

数组中第一个元素位置索引为 0,第二个元素位置索引为 1,依此类推。可以通用使用方括号内放置索引来访问数组中特定的某个元素。如下:

注意

与其他语言中的数组不同,JavaScript中数组不是定长的,数组的大小可动态增长。

代码如下:

这段代码中,开始创建了一个数组,并没有指定长度,此时它不包含任何元素,后三行使用索引号为数组增加了 3 个元素。

可使用length属性获得数组的大小,即数组中存储的元素个数。

刚才提到,数组大小可以动态增长。如果要为数组增加一项,则只要把在增加的值放在下一个未使用的位置即可。如下:

说明

这段代码中第一行运行之后,数组共有 3 个元素,它们的索引位置分别是0,1,2,下一个未使用的位置是 3,所以将值black赋给位置 3,这样数组的长度变成了4。但假设把值black赋给位置20呢?此时,从位置3到位置19都会被自动地赋予值undefined,再在位置 20 赋值black,这样数组的长度变成 21。

代码如下:

还可以使用字面量表示要创建的数组对象而不需调用数组的构造函数,即将一组元素值用逗号分隔放在方括号内。

要遍历访问数组中的每个元素,可以使用for循环或for in迭代。如:

或者:

以下详细介绍数组对象的属性和方法。

2.2.2 数组的属性

数组常用的属性是length,之前的介绍中已经提及,见表 2.1。

表2.1 数组的属性

2.2.3 数组的方法

数组的方法用于对数组中的元素进行操作,见表 2.2。

表2.2 数组的方法

本节将主要介绍join(),sort(),concat(),slice(),toString()方法,其他方法的介绍请参考附录部分。

1. join()

join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。语法如下:

参数separator可选,指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

join()方法返回一个字符串。该字符串是通过把arrayObject的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成的。

在下面的示例中,我们将把一个数组的所有元素放入一个字符串。

例 2.1:

2. sort()

sort()方法用于对数组的元素进行排序。语法如下:

参数sortby可选,规定排序顺序。必须是函数。

sort()方法返回对本数组的引用。

注意

数组在原数组上进行排序,不生成副本。

说明

如果调用该方法时没有使用参数,则无论数组元素的值是哪种类型,都将按字母顺序对数组中的元素进行排序,说得更准确点,是按照字符编码的顺序进行排序。

以下示例创建一个数组,并按数组元素的字母排序。

例 2.2:

说明

如果想按照其他规则进行排序,就需要提供一个比较函数作为sort()方法的参数。关于如何创建函数来实现自定义规则的排序,将在第 3章中介绍。

使用document.write()方法输出数组对象时,隐含调用了数组对象的toString()方法。toString()方法用于将数组对象转化为字符串,默认的结果为:使用“,”逗号连接各个元素成为一个字符串。

3. concat()

concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。语法如下:

参数arrayX必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。

concat()方法返回一个新的数组。该数组是通过把所有arrayX参数添加到arrayObject中生成的。如果要进行concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组本身。

在下例中,我们把concat()中的参数连接到数组subjects中,返回新的数组对象。

例 2.3:

在下例中,我们创建了两个数组,然后使用concat()把它们连接起来,返回新的数组对象。

例 2.4:

4. slice()

slice()方法可从已有的数组中返回选定的元素。

语法如下:

参数start必需规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第 2 个元素,以此类推。

参数end可选,规定从何处结束选取。该参数是数组片段结束处的数组下标。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

slice()方法返回一个新的数组,包含从start到end(不包括该元素)的arrayObject中的元素。

说明

该方法并不会修改数组,而是返回一个子数组。

注意

可使用负值从数组的尾部选取元素。另外,如果end未被规定,那么slice()方法会选取从start到数组结尾的所有元素。

在下例中,我们将创建一个新数组,然后显示从其中选取从某个位置开始到末尾的元素。

例 2.5:

在下例中,我们将创建一个新数组,然后显示从其中选取从某个位置开始到某个位置结束的元素。

例 2.6: oegNS7yqpI3E0teBvG+ZJIwEBr62qBmYVhz/x4iYDOUS8uqRYWuH4IgxfMLOvux+

点击中间区域
呼出菜单
上一章
目录
下一章
×