js数组

170 阅读2分钟

JS数组

js没有真正的数组只是用对象模拟数组

1641638935619.png

创建一个数组

 创建
 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.from('123')
 维数组
 let divList = document.querySelectorAll('div')
 伪数组原型链中没有数组的原型
 注意:没有数组共有属性的数组,就是为伪数组

创建数组(续)

 合并两个数组,得到新的数组
 arr1.concat(ARR2)
 截取一个数组的一部分
 arr1.slice(1)//从第二个元素开始
 arr1.slice(0)//全部截取
 注意:js只提供浅拷贝

删除元素

 跟对象一样
 let arr = ['a','b','c']
 delete arr['0']
 arr//(3) [empty, 'b', 'c']
 注意:数组长度并没有变化
 直接用length也可以删除数组
 let arr = [1,2,3,4,6]
 arr.length = 1
 注意:不要随便改变length
 删除头部的元素
 arr.shift() //arr被修改,并且返回被删掉的元素
 删除尾部元素
 arr.pop()//arr被修改,并且返回被删除的元素
 删除中间的元素
 arr.splice(index,1)//删除index的一个袁旭
 arr.splice(index,1,X)//并在删除位置添加'x'
 arr.splice(index,1,X,Y)//并在删除的位置添加'x','y'

查看元素

 查看所有属性名
 let arr = [1,2,3]
 Object.keys(arr)
 for(let key in arr) {console.log(`${key}:${arr[key]}`)}
 查看数字属性名和值
 for(let i = 0; i< arr.lenght; i++) {
     console.log(`${key}:${arr[key]}`)
 }
 使用forFach
 arr.forEach(function (time, index) {
     console.log(`${time}:${index}`)
 })
 //es6写法
 arr.forEach((time, index) => {
     console.log(time)
 })
 自己写一个forFach
 function forFach(arr,fn){
     for(let i=0; i< arr.length; i++){
         fh(arr[i],i,arr)
     }
 }

查看单个属性

 更对象一样
 let arr = [1,2,3]
 arr[0]
 索引越界
 arr[arr.length] === undefined
 arr[-1] === undefined
 查看某个元素是否在数组里
 arr.indexOf(time)//存在返回索引。否则返回-1
 使用条件查找元素
 arr.find(time=> time%2 ===0) 找第一个偶数
 使用条件找元素的所以
 arr.findIndex(time=> time%2 ===0)找到返回索引

1641643055298.png

增加数组中的元素

 在尾部添加
 arr.push(newitme)//修改arr 返回数组长度
 arr.push(imte1,time2)//修改arr 返回数组长度
 在头部添加元素
 arr.unshift(newitme)//修改arr 返回数组长度
 arr.unshift(imte1,time2)//修改arr 返回数组长度
 在中间添加元素
 arr.splice(index,0,x)//在index后添加x

修改数组中的元素

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

数组变换

 map:n变n
 let arr = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6]
 let arr2 = arr.map(function (x, i) {
     let riqi = ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四', '周六']
     console.log(i)
     return x = riqi[i]
 })
 console.log(arr2)
 filter:n变少
 let scores = [95, 91, 59, 55, 42, 82, 72, 85, 67, 66, 55, 91]
 let scores2 = scores.filter(function (x) {
     return x > 60
 })
 console.log(scores2) //  [95,91,82,72,85,67,66, 91]
 reduce:n变1
 console.log(scores2) //  [95,91,82,72,85,67,66, 91]
 let scores = [95, 91, 59, 55, 42, 82, 72, 85, 67, 66, 55, 91]
 let sum = scores.reduce((sum, n) => {
     let x = n % 2 === 0 ? 0 : n//判断是否是奇数
     return sum + x
 }, 0)
 console.log(sum)

\