1.for循环遍历数组
for(let i=0;i<arr.length;i++){
console.log(arr[i])
}
2.for of
ES6 新增接口概念 ,对所有具有interator的数据进行遍历
let arr=[1,2,3,4,5,6]
for( let item of arr)
{
console.log(item)
}
//1 2 3 4 5 6
3.forEach方法
参数:拥有三个参数,第一个参数当前循环元素,第二个参数为元素下标,第三个参数为数组本身,森哥参数都可选.
let arr=[1,2,3,4,5,6]
arr.forEach((item,index,arr)=>{
console.log(item)
})
// 输出:1 2 3 4 5 6
特点:提供一个callback,默认不会有return ,不能够被break中断循环
4.map方法
参数: 与forEach3个参数相同,均可选
let arr=[1,2,3,4,5]
let newArr=[]
newArr= arr.map((item,index,arr)=>{
console.log(item,"元素"+index)
return item>2?item:0
})
/*
1 元素0
2 元素1
3 元素2
4 元素3
5 元素4 (元素下标从0开始)
*/
console.log(newArr,'新数组')
//输出:[0,0,3,4,5] '新数组'
console.log(arr,'原数组')
//输出:[1,2,3,4,5] '原数组'
特点:map方法会产生一个新数组,本身是不会改变原数组的
5.some和every
参数:与forEach相同
let arr=[1,2,3,4,5,6]
let someArr=arr.some((item,index)=>{
return item===1
})
let everyArr=arr.every((item,index)=>{
return item===1
})
console.log(someArr)//输出:true
console.log(everyArr)//输出:false
特点:都有一个callback,每个元素执行回调.
return 都为true;every返回true ,否则为false;
return 其中一个为true,some返回true,全部false 返回false
不改变原数组
6.reduce
参数: 第一个参数为callback(必须),第二个参数为初始值(可选);
callnback有四个参数: 本循环的累计值,当前元素(必须),该元素下标(可选),数组本身(可选)
let arr=[1,2,3,4,5,6]
let sum= arr.reduce((val,item,index,arr)=>{
return val+item
},-6)
console.log(sum)//15
特点:reduce会将第二个参数作为初始值,数组元素执行回调,上一次的返回值(return)作为下一次的回调的初始值(val),最后返回结果(sum)
如果没有初始值,跳过第一次循环,将第一个元素作为初始值进入下一次循环.