一,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