数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
JavaScript 中的数组是一个可以储存多个任意类型数据的有序集合。
数组的特点:
- 数组的作用就是可以将多条零散的数据结合成一个整体;
- 数组本身属于“引用数据类型”,即数组是“对象”。但是数组内部储存的数据可以是任意数据类型。
- 根据需要可以对数组内部的数据进行操作(例如:增、删、查、改)
定义数组
创建数组的方式分为两种:
字面量方式
1[];构造函数方式
1new Array();
通过以上两种方式都可以创建出一个还未储存数据的空数组。其中字面量方式效率更高一些。因为方括号是使用 JSON 格式的语法,可以被 JavaScript 引擎直接解释,而 new 关键字的方式则需要调用构造函数。
一般情况下,为了方便后面对数组的操作使用,我们将数组创建好后都会赋值给一个变量保存起来。
|
|
数组初始化
数组初始化即在创建数组的同时就将数据添加进去。
|
|
数组的下标
前面提到,数组里面储存的数据是有顺序的。因此,每一条数据在数组中都有一个对应的位置编号,称之为“下标/索引”。
下标的取值从 0 开始,依次递增 1。
下标的使用
通过下标,就可以找到并操作数组中的任意数据。语法结构如下:
|
|
查看数据
|
|
修改数据
|
|
新增数据
|
|
下标 4 这个位置上没有赋值,当访问这个位置时会得到
undefined
的结果。
删除数据
|
|
数组的长度
数组的长度,即数组内保存的数据的条数。JavaScript 中为数组提供了一个length
属性,用来设置或返回数组的长度。
语法结构:
|
|
例:
|
|
小技巧:想要快速清空一个数组,就可以将数组的长度赋值为 0。
多维数组
JavaScript 中的数组有一个特点是可以储存任意类型的数据。也就意味着,数组里面的数据也可以是数组。
|
|
这种数组里面嵌套数组的结构,就叫做多维数组。
多维数组和普通数组的操作方式一样,都是通过下标来实现:
|
|
数组的遍历
数组的作用是可以批量保存多条数据,但是当我们需要对数据进行操作时,并不能通过直接操作数组来实现效果,还是需要将每一条数据从数组中取出来,然后再依次取对其进行操作。
数组的遍历就是指依次访问数组中每一项数据。
for 循环
for
循环是遍历数组最简单的一种,也是使用频率最高的一种。
|
|
优化版 for 循环
对于 for 循环的执行流程来说,i < ary.length
这个表达式会反复执行很多次,也就是说,数组的长度每次都要去重新获取。优化版 for 循环就是在普通版 for 循环基础之上,使用临时变量,将数组的长度ary.length
缓存起来,避免重复获取数组长度。代码如下:
|
|
for-of
ES6 中新增了一种遍历数组的方法 for-of,相比起 for 循环来说它的代码更加简洁。
|
|
说明:效率上来说 for-of 还是比不上普通的 for 循环。但是 for-of 除了可以遍历数组外,还可以遍历大多数类数组对象。例如后面会讲到的 Set、Map。