JS数组

187 阅读1分钟

数组对象(一种特殊的对象)

JS其实没用真正的数组,只是用对象模拟数组

JS的数组不是典型数组

  • 典型数组
  1. 元素的数据类型相同(比如全是数字)
  2. 使用连续的内存存储
  3. 通过数字下标获取元素

image.png

  • 但JS数组不这样
  1. 元素数据类型可以不同(可以是数字,也可以有对象)
  2. 内存不一定是连续的(对象是随机存储的)
  3. 不能通过数字下标,而是通过字符串下标获取元素,这意味着数组可以有任何key 比如:
let arr = [1,2,3]
arr['xxx'] = 1

image.png

创建一个数组

  • 新建
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)转为数组

伪数组的原型链里没有数组的原型

没有数组共用属性的【数组】就是伪数组