JS数组概况
典型数组
- 元素的数据类型相同
- 使用连续的内存存储
- 通过数字下表获取元素
JS数组
- 对象模拟的数组
- 元素数据类型可以不同
- 内存不一定连续的
- 不通过数字下标,而是通过字符串下表
- key不固定
数组的创建
- 新建
let arr = [1,2,3]
let arr = new Array(1,2,3)
let arr = new Array(3)//此处的3为数组长度
- 转化
let arr='1,2,3'.split(',')
let arr='1,2,3'.split('')
Array.from('123')//尽可能的转化为数组,可看mdn文档
Array.from(0:'a',1:'b',length:2)//提供元素和长度
- 伪数组 定义:没有数组的共有属性的数组,正常数组arr.__prototype__ 里有各种push,pop等api,但伪数组没有,只有类似数组的形式 eg.
let divList = document.querySelectorAll('div')//此时是伪数组,不信可以试一下,push报错
let divArray=Array.from(divList)//转化为正常数组就可以用了
- 合并 arr1.concat(arr2)
- 截取 arr1.slice(1)//从第二个开始,舍弃掉第一个元素//0,1,2...
arr1.slice(0)//相当于复制一个数组,一种特殊的复制数组方法(重要!!)
JS只提供浅拷贝
删除
- 删头部 arr.shift();
- 删尾部 arr.pop()
- 删中间
arr.splice(index,1)//index为下标位置,从0开始,1是删除元素个数
arr.splice(index,1,'x')//删除基础上,在删除位置添加‘x’
遍历数组
for(let i = 0; i < arr.length; i++){ console.log(`${i}: ${arr[i]}`) }
arr.forEach(function(item, index){
console.log(`${index}: ${item}`)
})//遍历数组,并且每次调用这个函数
读取单个属性
- 下表arr[0]
- 索引越界(-1,arr.lenth)
//查找某个元素是否在数组里
arr.indexOf(item)//返回下标(索引),未找到返回-1