什么是数组
数组是存储一系列值的变量集合,它是由一个或多个数组元素组成的,各元素之间使用逗号“,”分隔,每个数组元素由“下标”和“值”构成。
“下标”也可称为“索引”,以数字表示,默认情况下从0开始依次递增,用于识别元素;“值”为元素的内容,可以是任意类型的数据,如数值型、字符型、数组、对象等。
数组还可以根据维数划分为一维数组、二维数组、三维数组等多维数组。
一维数组就是指数组的“值”是非数组类型的数据。
二维数组是指数组元素的“值”是一个一维数组。
当一个数组的值又是一个数组时,就可以形成多维数组。
创建数组
- 使用Array对象创建数组
- 使用[]创建数组
数组的基本操作
获取数组长度
Array对象提供的length属性可以获取数组的长度,其值为数组元素最大下标加1.
数组的length属性不仅可以用于获取数组长度,还可以修改数组长度。
- 若length的值大于数组中原来元素个数,则没有值的数组元素会占用空存储位置;
- 若length的值等于数组中原来的元素个数,数组长度不变;
- 若length的值小于数组中原来的元素个数,多余的数组元素将会被舍弃。
JS中不论以何种方式设置数组长度后,并不影响继续为数组添加元素,同时数组的length属性值会发生相应的改变。
数组的访问与遍历
访问数组元素
数组创建完成后,若想要查看数组中某个具体的元素,可以通过“数组名[下标]”的方式获取指定下标的值。
遍历数组元素
遍历数组就是依次访问数组中所有元素的操作。
利用数组下标遍历数组可以使用for或for..in语句。
for(variable in object){...}
- variable指的是数组下标;
- object表示数组的变量名称。
若object是一个对象,for...in还可以用于对象的遍历。
ES6新增:for..of
元素的添加与修改
添加元素
修改元素
元素的删除
delete关键字
二维数组操作
创建与遍历
数组排序
冒泡排序
在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断地比较数组中相邻两个元素的值,较小或较大的元素前移。
冒泡排序比较的轮数就是数组长度减1,每轮比较的对数等于数组的长度减当前的轮数。
插入排序
通过构建有序数组元素的存储,对未排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。其中,待排序数组的第1个元素会被看作是一个有序的数组,从第2个至最后一个元素会被看做是一个无序数组。
数组方法
栈和队列方法
push()——将一个或多个元素添加到数组的末尾,并返回数组的新长度。
unshift()——将一个或多个元素添加到数组的开头,并返回数组的新长度。
pop()——从数组的末尾移出并返回一个元素,若是空数组则返回undefined。
shift()——从数组的开头移出并返回一个元素,若是空数组则返回undefined。
检索方法
- includes()——用于确定数组中是否含有某个元素,含有返回true,否则返回false。
- Array.isArray()——用于确定传递的值是否是一个Array,是返回true,不是返回false。
- indexOf()——返回在数组中可以找到给定值的第1个索引,如果不存在,则返回-1。
- lastlndexOf()——返回在指定元素在数组中的最后一个的索引,如果不存在则返回-1。
数组转字符串
-
join()——将数组的所有元素连接到一个字符串中
-
toString()——返回一个字符串,表示指定的数组及其元素。
其他方法
- sort()——对数组的元素进行排序,并返回数组
- fill()——用一个固定值填充数组中指定下标范围内的全部元素
- reverse()——颠倒数组中元素的位置
- splice()——对一个数组在指定下标范围内删除或添加元素
- slice()——从一个数组的指定下标范围内拷贝数组元素到一个新数组中
- concat()——返回一个合并两个或多个数组后的新数组