数组对象(一种特殊的对象)
JS其实没用真正的数组,只是用对象模拟数组
JS的数组不是典型数组
- 典型数组
- 元素的数据类型相同(比如全是数字)
- 使用连续的内存存储
- 通过数字下标获取元素
- 但JS数组不这样
- 元素数据类型可以不同(可以是数字,也可以有对象)
- 内存不一定是连续的(对象是随机存储的)
- 不能通过数字下标,而是通过字符串下标获取元素,这意味着数组可以有任何key 比如:
let arr = [1,2,3]
arr['xxx'] = 1
创建一个数组
- 新建
let arr = [1,2,3]
let arr = new Array(1,2,3)
let arr = new Array(3) //参数只有一个的时候,指数组长度为3
- 转化 例1:
let arr = '1,2,3'
arr.split(',') //[1,2,3]
//可写成:let arr = '1,2,3'.split(',')
例2:
let arr = '123'
arr.split('') //[1,2,3]
//可写成: let arr = '1,2,3'.split('')
例3:
Array.from('123') //[1,2,3]
如果满足下标有0,1,2,3和length属性
那么Array.from()也可以转化
比如:
Array.from({0:'a',1:'b',2:'c',3:'d', length: 4}) //length如果为2,那么就只会得到[a,b]
//[a,b,c,d]
伪数组
没啥用基本都要转换成数组
例如:
html:
<body>
<div> 1 </div>
<div> 2 </div>
<div> 3 </div>
</body>
JS:
let divList = document.querySelectorAll('div')
//可以用let divArray = Array.from(divList)转为数组
伪数组的原型链里没有数组的原型