遍历有几种方法
数组方法
地图
福瑞克
菲尔斯特
查找范围
findIndex
艾沃利
三人组
冗馀
冗馀光
其他方法
for
for in
for of
数组方法
地图
核心
创建一个新数组,该数组作为调用数组中每个元素提供的函数的结果返回。
不更改原始数组
返回值是新数组
let testArr=[ '子0 '、'子1 '、'子2'];
letresultarr=testarr.map((item,index ) )={return )处理(${item} )。
);
控制台. log (resultarr ); //结果:处理子代0、处理子代1、处理子代2
缺陷
可以使用返回,但不能使用break和continue
福瑞克
核心
一次运行为数组中的每个元素提供的函数。
总是回到undefined。
不更改原始数组
let testArr=[ '子0 '、'子1 '、'子2'];
testarr.foreach((item,index )={return`forEach处理${item} )。
);
缺陷
可以使用返回,但不能使用break和continue
菲尔斯特
核心
过滤数组中的每个项目,返回满足条件的item组成的数组
原始数组保持不变
let filterArr=[ '子0 '、'子1 '、'子2'];
letfilterresult=filter arr.filter ((item,index ) )={return item==='子0 ';
);
console.log (过滤器arr ); //[ '子0 '、'子1 '、'子2']
console.log(filterresult; [ '子0']
缺陷
可以使用返回,但不能使用break和continue
查找范围
核心
检查数组以找到第一个满足条件的项目,然后返回该项目。 否则我会回到undefined
数组保持不变
let findArr=[ '子0 '、'子1 '、'子2']
letfind result=findarr.find ((item,index ) )={return item==='子0 ';
);
控制台. log (findresult; //结果为:个孩子0
缺陷
可以使用返回,但不能使用break和continue
findIndex
核心
遍历数组以找到第一个满足条件的项目,并返回该项目的索引值。 否则返回-1。
数组对象保持不变。
let findIndexArr=[ '子0 '、'子1 '、'子2'];
letfindindexresult=findindexarr.findindex ((item,index ) )={return item==='子0 ';
);
控制台. log (findindexresult; //结果为: true
缺陷
可以使用返回,但不能使用break和continue
艾沃利
核心
对数组中的每个项执行预定函数,如果该函数为每个项返回true,则返回true。 简单来说,就是看数组中的每个元素是否满足要求,如果都满足,则返回true,否则返回false
leteveryarr=[ 2,3,4 ];
leteveryresult=every arr.every ((item,index ) ) returnitem0);
控制台. log (every result; //结果为: true
缺陷
可以使用返回,但不能使用break和continue
三人组
对数组中的每个项目执行指定的函数,如果该函数为其中一个项目返回true,则返回true。
letsomearr=[ 2,3,4 ];
letsomeresult=some arr.some ((item,index )={return item
> 3});console.log(someResult);//结果为: true
缺陷
可以使用return,但是不能使用break和continue
reduce
接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
第二个参数作为第一次调用的a的值
//reducer
let reduceArr = [0,1,2,3,4]
let reduceResult= reduceArr.reduce((a, b)=>{return a +b;
});
console.log(reduceResult);//结果: 10
缺陷
可以使用return,但是不能使用break和continue
reduceRight
和reduce一样是累加器,不过是从右往左计算
第二个参数作为第一次调用的a的值
let reduceRightArr = [0,1,2,3,4]
let reduceRightResult= reduceRightArr.reduceRight((a, b)=>{return a +b;
});
console.log(reduceRightResult);//结果: 10
缺陷
可以使用return,但是不能使用break和continue
其他方法
for循环
核心
使用临时变量,并且遍历的是key.
let testArr = ['子项0','子项1','子项2'];for(var i = 0; a < testArr.length; i++){
console.log(testArr[i]);
}
缺陷
可以正常使用使用break和continue, 但是不能正常使用return
let testArr = ['子项0','子项1','子项2'];//break
for(var i = 0; i < testArr.length; i++) {if(i === 1) {break;
}
console.log(testArr[i]);
}//结果为: 子项0
//continue
for(var i = 0; i < testArr.length; i++) {if(i === 1) {continue;
}
console.log(testArr[i]);
}//结果为: 子项0 子项目2
//return
for(var i = 0; i < testArr.length; i++) {if(i === 1) {return;
}
console.log(testArr[i]);
}//结果为什么也没有
for in循环
核心
遍历的是key
let testArr = ['子项0','子项1','子项2'];for(let i intestArr){
console.log(testArr[i])
}
缺陷
可以正常使用使用break和continue, 但是不能正常使用return
let testArr = ['子项0','子项1','子项2'];//break
for(let i intestArr){if(i === 1) {break;
}
console.log(testArr[i]);
}//结果为: 子项0
//continue
for(let i intestArr){if(i === 1) {continue;
}
console.log(testArr[i]);
}//结果为: 子项0 子项目2
//return
for(let i intestArr){if(i === 1) {return;
}
console.log(testArr[i]);
}//结果为什么也没有
for of循环
核心
遍历的是value
let testArr = ['子项0','子项1','子项2'];for(let i of testArr) {
console.log(i);
}
缺陷
可以正常使用使用break和continue, 但是不能正常使用return
let testArr = ['子项0','子项1','子项2'];//break
for(let value of testArr){if(value === '子项1'){break;
}
console.log(value);
}//结果为: 子项0
//continue
for(let value of testArr){if(value === '子项1'){continue;
}
console.log(value);
}//结果为: 子项0 子项目2
//return
for(let value of testArr){if(value === '子项1'){return;
}
console.log(value);
}//结果为什么也没有
注意⚠️
数组方法都不可以用break和continue,for循环之类的不可以用return但是可以正常使用break和continue