Webcourse/04-JavaScript基础/14-数组简介.md
2019-10-01 20:25:16 +08:00

177 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 之前学习的数据类型,只能存储一个值(字符串为一个值)。如果我们想存储多个值,就可以使用数组。
## 数组简介
数组Array是属于**内置对象**,我们可以在[MDN](https://developer.mozilla.org/zh-CN/)网站上查询各种方法。
数组和普通对象的功能类似,也是用来存储一些值的。不同的是:
- 普通对象是使用字符串作为属性名的,而数组是使用数字来作为**索引**来操作元素。索引从0开始的整数就是索引。
数组的存储性能比普通对象要好。在实际开发中我们经常使用数组来存储一些数据,使用频率非常高。
## 数组的基本操作
数组的元素可以是任意的数据类型,也可以是对象,也可以是函数,也可以是数组。
数组的元素中,如果存放的是数组,我们就称这种数组为二维数组。
### 创建数组对象
**方式一**:字面量定义。举例:
```javascript
var arr = [1,2,3];
```
**方式二**:对象定义(数组的构造函数)。
语法:
```
var arr = new Array(参数);
```
如果**参数为空**,则表示创建一个空数组;参数位置是**一个数值**时,表示数组长度;参数位置是**多个数值**时,表示数组中的元素。
上面的两种方式,我来举个例子:
```javascript
// 方式一
var arr1 = [11, 12, 13];
// 方式二
var arr2 = new Array(); // 参数为空
var arr3 = new Array(4); // 参数为一个数值
var arr4 = new Array(15, 16, 17); // 参数为多个数值
console.log(typeof arr1); // 打印结果object
console.log("arr1 = " + JSON.stringify(arr1));
console.log("arr2 = " + JSON.stringify(arr2));
console.log("arr3 = " + JSON.stringify(arr3));
console.log("arr4 = " + JSON.stringify(arr4));
```
打印结果:
```javascript
object
arr1 = [11,12,13]
arr2 = []
arr3 = [null,null,null,null]
arr4 = [15,16,17]
```
从上方打印结果的第一行里,可以看出,数组的类型其实也是属于**对象**。
### 向数组中添加元素
语法:
```javascript
数组[索引] =
```
代码举例:
```javascript
var arr1 = [];
// 向数组中添加元素
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
```
### 获取数组中的元素
语法:
```javascript
数组[索引]
```
数组的索引代表的是数组中的元素在数组中的位置从0开始。
如果读取不存在的索引比如元素没那么多系统不会报错而是返回undefined。
代码举例:
```javascript
var arr = [21, 22, 23];
console.log(arr[0]); // 打印结果21
console.log(arr[5]); // 打印结果undefined
```
### 获取数组的长度
可以使用`length`属性来获取数组的长度(元素的个数)。
语法:
```javascript
数组的长度 = 数组名.length
```
代码举例:
```javascript
var arr = [21, 22, 23];
console.log(arr.length); // 打印结果3
```
补充:
对于连续的数组使用length可以获取到数组的长度元素的个数对于非连续的数组使用length会获取到数组的最大的索引+1。因此尽量不要创建非连续的数组。
### 修改数组的长度修改length
- 如果修改的length大于原长度则多出部分会空出来置为 null。
- 如果修改的length小于原长度则多出的元素会被删除数组将从后面删除元素。
- 特例伪数组arguments的长度可以修改但是不能修改里面的元素后面单独讲。
代码举例:
```javascript
var arr1 = [11, 12, 13];
var arr2 = [21, 22, 23];
// 修改数组 arr1 的 length
arr1.length = 1;
console.log(JSON.stringify(arr1));
// 修改数组 arr2 的 length
arr2.length = 5;
console.log(JSON.stringify(arr2));
```
打印结果:
```javascript
[11]
[21,22,23,null,null]
```
## 我的公众号
想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
![](http://img.smyhvae.com/20190101.png)