一种特殊的对象 JS其实没有真正的数组,只是用对象模拟数组

JS的数组不是典型的数组

典型的数组

  1. 元素的数据类型相同
  2. 使用连续的内存存储
  3. 通过数字下标获取元素

image.png

JS的数组

用key,value模拟的;实际上是对象

  1. 元素的数据类型可以不同
  2. 内存不一定是连续的(对象是随机存储的)
  3. 不能通过数字下标,而是通过字符串下标

image.png
这意味着数组可以有任何 key 比如 let arr = [1,2,3] arr['xxx'] = 1
image.png

创建一个数组

新建数组的写法

  1. 简化写法:let arr = [1,2,3]

image.png

  1. 标准写法: let arr = new Array(1, 2, 3)
  2. let arr = new Array(3),3 表示数组的长度length

    通过字符串创建数组

  3. let arr = '1,2,3'.split(',')

  4. let arr = '123'.split('')

image.png

  1. Array.from('123')

Array.from('123') 把不是数组的东西尝试变成数组(es6新语法)
条件:1. 有0,1,2,3下标
2.有length属性
image.png
image.png
length决定数组长度:
image.png

伪数组

没有数组公用属性的数组,就是伪数组

  1. let divList = document.querySelectorAll('div')
  2. 伪数组的原型链中并没有数组的原型,不能进行pop,push等操作。

image.png

合并两个数组,得到新数组

arr1.concat(arr2)
不会改变原数组
image.png

截取一个数组的一部分

arr1.slice(1)//从第二个元素开始
image.png
arr1.slice(0)//全部截取
可以用来复制一个数组
⚠️JS只提供浅拷贝
image.png