JS数组

152 阅读1分钟

js数组不是真正的数组

典型的数组

  • 元素的数据类型相同
  • 使用连续的内存存储
  • 通过数字下标获取元素

js数组

  • 元素的数据类型不同
  • 内存不一定是连续的(对象是随机存储的)
  • 不能通过数字下标,而是通过字符串下标

创建数组

新建

  • let arr=[1,2,3]
  • let arr=new Array(1,2,3)
  • let arr=new Array(3)

转化

  • let arr='1,2,3'.split(',')
  • let arr='123'.split('')
  • 将对象变为数组Array.form('123')
  • 合并两个数组,得到新的数组arr1.concat(arr2)
  • 截取一个数组的一部分 js只提供浅拷贝
  1. arr1.slice(1) 从第二个元素开始

删元素

  • 删除头部的元素,返回被删元素。arr.shift()
  • 删除尾部的元素,返回被删元素。arr.pop()
  • 删除中间的元素,返回被删元素。
  1. 删除index的一个元素arr.splice(index,1)
  2. 并在删除的位置上加'x'arr.splice(index,1,'x')
  3. 并在删除的位置上加'x','y'arr.splice(index,'x','y')

查看所有元素

  • 查看所有属性名
let arr=[1,2,3,4,5];arr.x='xxx'
Object.keys(arr)
for(let key in arr){console.log(`${key}:${arr[key]}`)}
  • 查看数字(字符串)属性名和值
for(lei i=0;i<arr.lrngth;i++)
{console.log(`${i}:${arr[i]}`)
}
arr.forEach(function(item,index)
{console.log(`${index}:${item}`)
})

forEach用for访问array的每一项

微信图片_20220411113733.png

查看单个属性

  • 索引越界
  1. arr[arr,length]===undefined
  2. arr[-1]===undefined
  • 查找某个元素是否在数组里,存在返回索引,否则返回-1`arr.indexOf(item)
  • 使用条件查找元素arr.find(item=>item%2===0)

增加数组中的元素

  • 在尾部加元素,返回新长度。
  1. arr.push(newItem)
  2. arr.push(item,item2)
  • 在头部加元素,返回新长度。
  1. arr.unshift(newItem)
  2. arr.unshift(item,item2)
  • 在中间添加元素
  1. arr.splice(index,0,'x')
  2. arr.splice(index,0,'x','y')

修改数组中的元素

  • 反转顺序arr.reverse()
  • 自定义顺序arr.sort((a,b)=>a-b)

微信图片_20220411120124.png

数组变换

  • map n变n
  • filter n变少

微信图片_20220411120418.png

  • reduce n变1

微信图片_20220411120744.png

微信图片_20220411120855.png

伪数组

没有数组共有属性的数组就是伪数组。