JS数组

112 阅读1分钟

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