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.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)找到返回索引
增加数组中的元素
在尾部添加
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)
\