js的数组不是典型数组
典型的数组有以下特征
- 元素的数据类型相同
- 使用连续的内存储存
- 通过数字下标获取元素

但是js的数组不是这样
- 元素的数据类型可以不同
- 内存不一定是连续的(对象是随机存储的)

- 不是通过数字下标,而是通过字符串下标,这就意味着数组可以由任意的Key


如果创建数组
通过新创建的方式
- 使用new Array()方法,如果参数只有1个,代表新建数组的长度,并且内容为空;如果参数为1个以上,则参数代表新创建数组的元素;


- 简便方式

转化方式
- 字符串通过split()可转化为数组


- Array.from(参数) 参数必须为字符串,可以为空字符串

合并数组可得到新数组,使用concat()方法

截取数组的一部分也可以得到新的数组,使用slice()方法,如果slice方法不传参数,可以对数组进行浅拷贝


删除数组元素
数组的本质是对象,那我们能不能使用删除对象的方法呢?答案是不行,请看下图

如果直接更改数组的length属性能删除吗?答案是可以,但是我们不能随便更改数组的length

正规的删除数组的元素的方法
删除头部的元素shift(),此方法会改变原来数组,返回被删除的元素
删除尾部的元素pop(),此方法会改变原来数组,返回被删除的元素

删除中间的元素array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) start为开始的位置,从0开始;deleteCount为删除的个数,可选参数,item1,item2为在删除的位置添加的元素,可选;方法会改变原来数组,返回被删除的元素

查看数组属性名与值
如果要查看对象的属性名与值,我们可以使用for in ,但是在数组中,要使用for循环,因为for in 会查看到非数字属性名;

for循环与forEach的区别是什么?
for 循环可根据条件使用break终止循环,而forEach不可以,必须全部遍历一遍

查看单个属性
查找某个元素是否在数组里面
arr.indexOf(el); 存在返回索引,否则返回-1

使用条件查找元素
arr.find(),一旦find发现符合条件,就终止循环,所以只会有一个元素返回

使用条件查找元素的索引
arr.findIndex()查找符合条件的第一个元素的索引
添加元素
在尾部添加元素,push方法,返回新长度,修改原来数组
arr.push(ele1,ele2)
在头部添加元素,unshift方法,返回新长度,修改原来数组
arr.unshift(ele1,ele2)
在中间添加元素
arr.splice(index,0.el1,el2) 在index处插入el1,el2
数组反转
arr.reverse() // 修改原数组
自定义顺序
arr.sort((a,b) => a -b )
数组的变换
- map()方法
- filter()方法
- reduce()方法