性质
JS数组是对象模拟出来的,本质依然是数组,这意味着:
- 他的索引号其实是字符串.例如
Object.keys(arr)得到了字符串,也可以添加任意字符串key - 元素可以是各种类型
- 他们在内存中是随机排放的
创建数组
新建
let arr = new Array(3,4,5)规范写法,注意当只有一个实参的时候,表示为数组的长度let arr = [3,4,5]简写,不推荐
转化
let arr = '1,2,3'.spilt(',')Array.from('123')
合并
arr1.concat(arr2)
截取
arr.slice(1,4)从索引号1开始包括1,截取4个.slice:多指切得很薄的一片食物
伪数组
像函数中的argument,从DOM树上获得的元素都是伪数组,伪数组是普通的对象,他也就就没有的Array.prototype的属性
删元素
delete arr['0']奇怪的是这种方式只能将元素变成一个空位arr.length = 1修改长度能删除元素,但这种方式并不推荐arr.shift()删除头部元素arr.pop()删除尾部元素arr.splice(1,2,3,4,5)从索引号1开始删除2个,并将3,4,5添加其后
查看元素
arr[1]for(let i=1; i<arr.length;i++){console.log('${i}:${arr[i]}')}arr.forEach(function(x,y,z){})x为arr[i],y为i,z为arr
自己创建一个foreach函数来获知原理
function forEach(arr[i],i,arr){
for(let i=0;i<length;i++){
fn(array[i],i,array){
console.log(arr[i])
console.log(i)
console.log(arr)
}
fn(array[i],i,array)}
查看单个属性
arr[i].toString读取单个元素arr.indexOf()查看是否存在某元素arr.find(item===1)查看第一个符合条件的元素arr,findIndexitem===1)()查看第一个符合条件的元素的索引
增加元素
arr.push()从数组的后边添加某些元素arr.unshift()从数组的前边添加某些元素arr.push(3,0,1)从数组的中间添加元素
翻转和排序
arr.reverse()arr.sort((a,b)=>a-b)可指定正序倒序
数组变换
arr.map(function(item){})对每个元素调用函数,在组成新数组arr.filter(function(item){}))不符合条件的元素过滤掉arr.reduce((sum,item)=>sum+item,0)对元素调用函数运算得到最终值