JS数组是一种特殊的对象
JS没有真正的数组,只是用对象模拟数组
典型的数组
(1)元素的数据类型相同
(2)使用连续的内存存储
(3)通过数字下标获取元素
但JS的数组不是这样
(1)元素的数据类型可以不同
(2)内存不一定是连续的(对象是随机存储的)
(3)不能通过数字下标,而是通过字符串下标
(4)这意味着数组可以有任何的key
比如let arr = [1,2,3] arr[‘xxx’] = 1
伪数组
(1)伪数组的原型 直接指向 object
(2)伪数组的原型链中并没有数组的原型
(3)没有数组的共有属性(push/pop/shift)
没有数组共有属性的数组就是 - 伪数组
删元素
- 跟对象一样
let arr = ['a','b','c']
delete arr['0']
arr // [empty, 'b','c']
神奇,数组的长度并没有变
稀疏数组
- 直接改length会删除长度后的元素
let arr = [1,2,3,4,5]
arr.length = 1 // 2,3,4,5会直接删除
- 删元素的方法
删除头部的元素
arr.shift() //arr被修改,并返回被删元素
删除尾部的元素
arr.pop() //arr被修改,并返回被删元素
删除中间的元素
arr.splice(index,1) //删除index的一个元素
arr.splice(index,1,'x') //并在删除位置添加'x'
arr.splice(index,1,'x','y') //并在删除位置添加'x','y'
查看所有元素
- 查看所有属性名
let arr = [1,2,3,4