JS其实没有真正的数组,只是用对象来模拟数组
对于没有数组共有属性的数组 成为伪数组
典型的数组 和 JS数组对比**
典型: 元素的数据类型相同 、 使用连续内存存储 、 通过数组下标取值
JS数组:元素的数据类型可以不同、 JS存储是随机存储的,内存不一定是连续的
新建数组:
let arr = [1,2,3] === let arr = new Array(1,2,3)
let arr = new Array(3) 创建一个长度为3的数组
let arr3 = arr1.concat(arr2) 合并两个数组
let arr4 = arr1.slice(1) /arr1.slice(0)
从第二个/全部数组元素开始截取
转化数组:
let arr=’1,2,3’.split(‘,’) / let arr=’123’.split(‘’)
Array.from(‘123’)
数组的增删改查:
增
在尾部加元素x
arr.push(‘x’)
在头部加元素x
arr.unshift(‘x’)
在中间加元素x
arr.splice(X,0,’x’,’y’)
删*改*
let arr = [‘a’,’b’,’c’]
delete arr[0] => arr = [empty , ‘b’, ‘c’] 能删除数组中的元素值
arr.shift() 删除头部的元素
arr.pop() 删除尾部的元素
arr.aplice(X,1) 删除X数组的一个元素
arr.aplice(X,1,’x’) 在删除X数组的一个元素,增加一个’x
arr.aplice(X,1,’x’,’y’) 在删除X数组的一个元素,增加多个’x’’y’
反转元素 arr.reverse() 修改元素顺序
自定义顺序 arr.sort((a,b) => a-b)
查
let arr = [1,2,3,4,5];
arr.x=”xxx”;
Object.keys(arr) // 打印出arr的元素值
for(let key in arr){console.log(${key}:${arr[key]}
)} //打印出元素位置与元素值
数组变换
arr.map() 从N—N
arr.filter() 从N——(n—) 从多变少
arr.reduce() 从多变一