JS数组

100 阅读1分钟

性质

JS数组是对象模拟出来的,本质依然是数组,这意味着:

  1. 他的索引号其实是字符串.例如Object.keys(arr)得到了字符串,也可以添加任意字符串key
  2. 元素可以是各种类型
  3. 他们在内存中是随机排放的

创建数组

新建

  • 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)对元素调用函数运算得到最终值