常用循环数组方法总结

229 阅读3分钟

在工作当中循环数组总是用for,像是一种习惯,看别人的代码发现用map,forEach很多,于是打算做个总结。

const arr = ['1','2','3','4','5','6','7']

1.for循环

最基础的循环,在学循环语句的时候最先学的就是for循环,只是在用的时候有两点注意:

*长度要声明--因为如果不将长度缓存起来,每遍历一次就要获取一遍数组长度,性能不好;

*能减不加--因为计算机计算减法要比计算加法省力;

for (let i = 0,l = arr.length; i < l; i++){
    //todo
}
for(let i = arr.length; i > 0; i--){
    //todo
}

2.forEach循环

遍历数组的每一项,执行一个回调函数,将数组的每一项作为参数传递给回调函数,除此之外,函数还有两个参数:下标和原数组;注意以下几点:

*每遍历一次,函数就会执行一次;

*IE9以下不支持;

*不改变原数组;

*空数组不执行回调函数;

arr.forEach((item,index,array)=>{
    //参数说明;item-数组的每一项,必选参数;index-下标,不必选参数;array-原数组,即这里的arr,不必选参数
    //todo
})

在回调函数里执行return,就会停止执行此次函数,继续下一个回调函数,而不会停止整个循环,虽然可以执行return,但是并不能返回值

3.map循环

es6当中新出现的,语法和forEach一样,参数也一样,但是可以return返回值,即可以为数组中的某一项或多项赋值,并不改变原数组,相当于把原数组克隆一份,改变的是克隆数组中的值,注意事项和forEach也是一样,个人认为map比forEach好用。

let arrAdd = arr.map((item,index,array) => {
    return +item + 1
})
console.log(arr,arrAdd)

4.for of 循环

可以循环数组,也可以循环字符串,官方文档给的是可以循环所有可迭代的对象,也就是说只要是可迭代的数据结构(Array,String,Map,Set等等)就可以用for of循环,终止循环可以用break,continue,return,throw;

for(let i of arr){
    console.log(i)
}

注意:对象,我说的是普通的对象并不是可迭代数据结构,不能用for of循环。

5.for in 循环

常用来循环对象,普通的对象-object,当然也可以循环数组;

const object = {a:1,b:2}
for(let i in object){
    console.log(i,object[i])
}

6.filter

翻译成中文是过滤器的意思,也就是过滤数组的每一项得到符合条件的新数组,不会改变原数组,语法和map一样。

let arrFilter = arr.filter((item) => {
    return item >= 2
})
console.log(arrFilter)

以上就是常用的循环数组的方法,总结发现map用来返回值的,forEach用来处理但是不返回值的,filter是用来筛选的,这三个都是不能跳出循环的,当需要跳出循环的时候还是用for吧,而如果不需要跳出循环的时候就用map吧。