数组
一、数组
- JS 里面的数据类型, 叫做 Array
- 一个复杂数据类型
- 是一个盒子, 里面能存储很多的数据, 但是是按照 下标进行排列的
二、数组的创建方式有两种
1. 字面量创建
- var a = []
- [] 代表一个空数组
2. 内置构造函数创建
-
使用这个内置构造函数 Array 去创建一个数组
-
var a = new Array()
-
使用内置构造函数有三种方式:
-
不传递参数
var a = new Array(),创建一个新的空数组
-
传递一个参数, 并且是一个数字
var a = new Array(10),创建一个数组, 数组里面有 10 个数据, 但是每一个数据都是空的
-
传递多个参数, 什么数据类型无所谓
var a = new Array(数据1, 数据2, 数据3, …),传递多少个数据,就表示创建的数组里面有多少个数据
三、数组的特点
1. 数组是一个有序的数据集合
- 按照下标(索引) 进行排列
- 下标是 从 0 开始, 依次 +1 排列
2. 数组的 索引(下标) 是一个读写的属性
-
可以通过 索引 获取数组中的某一项
- 想获取数组中哪一个数据,数组名[索引]
- 当获取一个没有的索引的时候, 那么得到的就是 undefined
-
可以通过 索引 设置数组中的某一项
-
设置数组某一位数据的时候, 数组名[索引] = 值
-
当设置一个超过数组长度的索引的时候, 就是添加
- 当设置的超过长度很多的时候, 那么中间的位置用 空 来补齐,比如数组长度是 5, 设置索引 100 的数据, 中间的都用空来填充
-
3. 数组有一个属性叫做 length
-
用来表示数组的长度, 也是一个读写的属性
-
可以通过 length 属性读取数组的长度
-
数组名.length,获取到的就是该数组的长度, 也就是有多少个数据,是一个 number 数据类型
-
可以通过 length 属性设置数组的长度
- 数组名.length = 数字
- 当设置的比数组本身长度小的时候, 那么就相当于把后面的删除了
- 当设置的比数组本身长度大的时候, 就相当于扩展了数组, 多出来的位置用空补齐
4. 数组的 length 和 索引 的关系
- 数组的 length 和 索引 一定是存在的
- 数组永远第一位索引一定是 0
- 数组永远最后一位索引是数组的 length - 1
5. 可以使用循环来遍历数组
- 因为数组的索引是按照数字排列, 从 0 开始依次 +1, 循环刚好也可以得到这样一组有规律的数字,所以可以使用循环来遍历数组(遍历: 从头到尾依次查看数组里面的数据)
四、数组常用方法
-
push()
语法: 数组.push(数据)
作用: 向数组的末尾添加一个数据
返回值: 添加以后数组的长度 -
pop()
语法: 数组.pop()
作用: 删除数组的最后一个数据
返回值: 就是删除掉的数据 -
unshift()
语法: 数组.unshift(数据)
作用: 在数组的最前面添加一个数据
返回值: 添加以后数组的长度 -
shift()
语法: 数组.shift()
作用: 删除数组的 [0] 位置数据, 最前面一个数据
返回值: 被删除的数据 -
reverse()
语法: 数组.reverse()
作用: 反转数组, 直接改变原始数组
返回值: 反转以后的数组 -
sort()
语法:
1. 数组.sort(),按照一位一位的顺序来进行排列的
2. 数组.sort(function (a, b) { return a - b }),按照数字的从小到达进行排列
3. 数字.sort(function (a, b) { return b - a }),按照数字的从大到小进行排列
作用: 对原始数组进行排序, 直接改变原始数组
返回值: 排序好的数据 -
splice()
语法:
1. 数组.splice(开始索引, 多少个)
+ 将数组里面的数据从 开始索引 开始截取, 截取指定个数据
+ 把截取出来的数据组合成一个新的数组当作返回值
2. 数组.splice(开始索引, 多少个, 替换数据1, 替换数据2, 替换数据3, …)
+ 替换数据, 可以是一个, 可以是两个, 多少个都无所谓
+ 从哪一个索引开始截取, 填充到哪一个索引位置, 剩下的向后顺延
+ ⚠️注意: 从哪里开始截取, 从哪里开始填充
+ 开始索引, 就是第一个填充数据的索引
作用: 截取数组里面的数据, 进行替换(可以替换可以不替换)
返回值: 截取出来的所有内容, 组合成一个新的数组 -
slice()
语法:
1. 数组.slice(开始索引, 结束索引)
+ 获取数组中从 开始索引 到 结束索引 的数据
+ 以一个新数组的形式返回
+ ⚠️注意: 包前不包后, 在获取的过程中, 包含开始索引数据, 不包含结束索引数据
2. 数组.slice(开始索引, 结束索引)
+ 结束索引可以写一个 负整数
+ 当书写一个负整数的时候, 实际上就是相当于 数据.length + 负整数作用: 获取数组中的部分数据, 不改变原始数组
返回值: 从数组中获取的一部分数据 -
concat()
语法: 数组.concat(数组1, 数组2, 数组3, …)
作用: 把多个数组拼接到原始数组的末尾, 不改变原始数组
返回值: 拼接好的数组 -
join()
语法: 数组.join(‘连接符’)
作用: 是把数组里面的每一项连接成一个字符串, 不改变原始数组
返回值: 就是使用连接符连接好的字符串