一,ES5中常用数组遍历方式:
首先定义一个数组
let arr = [7,9,12,16,3,20,8,5,6]
1.for 循环
for(let i = 0;i<arr.length;i++){
console.log(arr[i])
}
2.forEach()遍历
arr.forEach((item=>{
console.log(item)
}))
注意:forEach只做循环遍历,不做值返回
3.map()遍历,返回新的数组,数组中的每一个元素为调用func的结果,不对原数组做修改
let result = arr.map(item=>item+1)
console.log(result) // [8, 10, 13, 17, 4, 21, 9, 6, 7]
4.filter() 根据函数设定的条件过滤,返回符合func条件的元素
let result = arr.filter(item=>item%2 ==0)
console.log(result) // [12, 16, 20, 8, 6]
5.reduce(Fn(prev,cur,index,arr)=>{},value) 接收一个函数做累加器, 并传入一个初始值
例1,求和
let sum = arr.reduce((prev,cur)=>{
return prev+cur
},0)
console.log(sum) //86
例2 ,获取数组中最大值
let sum = arr.reduce((prev,cur)=>{
return Math.max(prev,cur)
},0)
console.log(sum) //20
例3,数组去重
let arr1 = [1,2,3,4,2,1]
let sum = arr1.reduce((prev, cur) => {
prev.indexOf(cur) == -1 && prev.push(cur)
return prev
}, [ ])
console.log(sum) // [1, 2, 3, 4]
5.some()返回布尔值,判断是否有元素符合func条件
let result = arr.some(item=>item==12)
console.log(result) // true
6.every()返回布尔值,判断是否每一个元素都符合func条件
let result = arr.some(item=>item==12)
console.log(result) // false
7.for in (存在问题)
Array.prototype.foo = function(){
console.log('foo')
}
for(let i in arr){
console.log(arr[i]) //7 9 12 16 3 20 8 5 6 f (){ console.log('foo') }
]
}
注意:for in ,在Array的原型中添加一个func,此时再循环数组,原型下的方法,将被遍历出来
二,ES6中新增数组遍历方式:
首先定义一个数组
let arr = [1,2,3,4,5,6,2,3]
1.find() 遍历数组并找到数组中第一个与返回符合条件的值
let res = arr.find(item=>item==2)
console.log(res) //2
2.findIndex() 遍历数组并找到数组中第一个与返回符合条件的值的下标
let res = arr.findIndex(item=>item==2)
console.log(res) // 1
3.for of , values() keys() entries()
for(let item of arr){ //直接使用for of 等同于 values() 输出每一个元素的值
console.log(item) // 1 2 3 4 5 6 2 3
}
1.values() 输出每一个元素的值
for(let item of arr.values()){
console.log(item) // 1 2 3 4 5 6 2 3
}
- keys() 输出每一个元素的索引
for(let item of arr.keys()){
console.log(item) //0 1 2 3 4 5 6 7
}
3.entries() 输出每一个元素的索引与值
for(let [index,item] of arr.entries()){ //.entries( 输出每一个元素的索引与值
console.log('索引',index,‘值’,item)
}
//输出结果:
// 索引 0 值 1
//索引 1 值 2
//索引 2 值 3
//索引 3 值 4
//索引 4 值 5
//索引 5 值 6
//索引 6 值 2
//索引 7 值 3