for :循环遍历
while:循环
for..in :效率最低的遍历,输出的是数组的索引,遍历的是对象则输出对象的属性名
for..of (ES6) :不能循环遍历对象,因为Object对象没有iterator接口,性能相比for..in有稍微提升
forEach :
- 有几个元素,forEach里的回调函数就执行几次
- 在循环次数不确定或者需要计算而且复杂的情况下,效率比for循环高
- 循环的数组元素是基本数据类型,不会改变原数据的数据,循环的数组元素为对象,会改变原数组的对象属性的值
- 循环过程中不支持修改索引
- 不能使用break和continue跳出整个循环或当前循环的,但是结合try...catch可以实现跳出循环
- 第一个参数是数组里的元素,第二个参数为数组里元素的索引,第三个参数则是它自己(利用第三个参数可以进行数组去重)
map遍历 :
- 遍历每一个元素并且返回对应的元素(可以返回处理后的元素) (map 映射 一一 对应)
- 返回创建的新数组和原来旧数组的长度是一样的,使用比较广泛,但其性能还不如 forEach
- 不能使用break和continue跳出整个循环或当前循环的,但是结合try...catch可以实现跳出循环
filter(ES6):遍历数组,过滤出符合条件的元素并返回一个新数组,没有则返回空数组
some(ES6):遍历数组,只要有一个以上的元素满足条件就返回true,否则返回false
every(ES6):每个元素都符合条件,则返回true,否则false
find(ES6):返回符合条件的第一个元素,没有则返回undefined
findIndex(ES6):返回符合条件的第一个元素的索引,没有则返回-1
reduce() :遍历数组的全部元素,将函数返回值累加,并返回这个累加值,可以用于赋初值
let sum = arr.reduce((accumulator,currentValue) => { //accumulator为每次迭代后的累计值,currentValue为每次迭代时从arr传来的元素值 return currentValue * 2 + accumulator},100) //将数组中每一个元素都乘以2累加并加上初始值100console.log(sum); //156