JavaScript常用数组遍历方法

  1. 普通的for循环
    let arr = [1,2,3,4,5,6,7,8,9]; for (let i = 0; i < arr.length; i ++) { console.log(arr[i]); }
    //最简单,**使用频率最高**的一种遍历方法,虽然性能不弱,但仍有优化空间
    for (let i = 0,len = arr.length; i < len; i ++) { conso.log(arr[i]); }
    //使用临时变量保存数组长度,避免重复获取数组长度,**当数组较大时优化效果才会比较明显**
    for (let i = 0; arr[i] != null; i ++) { console.log(arr[i]); }
    //使用数组项本身判断的循环,**性能要远小于普通for循环**
  2. forEach循环
    let arr = [1,2,3,4,5,6,7,8,9] arr.forEach((item, index) => { console.log(item,index); })
    //使用频率较高,**性能稍弱于普通for循环**,代码比较简单,缺点是无法中断停止整个循环
  3. for . . . in . . . 循环
    let arr = [1,2,3,4,5,6,7,8,9] for (let i in arr) { console.log(i); }
    //更常用于对象的遍历,在众多循环遍历方式中**效率最低**
  4. for . . . of . . . 循环
    let arr = [1,2,3,4,5,6,7,8,9] for (let i of arr) { console.log(i); }
    //可以通过break方法终止循环,continute方法跳过当次循环,**性能要好于for . . . in . . .循环,但仍比不上普通for循环**
  5. filter
    let arr = [1,2,3,4,5,6,7,8,9] arr.filter((item, index) => { console.log(item); }) //不会对空数组进行检测,不会改变原始数组
  6. map
    let arr = [1,2,3,4,5,6,7,8,9] let newArr = arr.map((item, index) => { return item; }) //支持return返回值,使用效率比forEach低
  7. every
    let arr = [1,2,3,4,5,6,7,8,9] arr.every((item, index) => { return item> 5; }) //检测数组所有元素是否都符合条件返回true,否则返回false
  8. some
    let arr = [1,2,3,4,5,6,7,8,9] arr.some((item, index) => { return item > 7; }) //检测到数组中只要有一个值符合条件就返回true,剩下的元素都不会继续执行,全部不符合则返回false
  9. reduce && reduceRight
    let arr = [1,2,3,4,5,6,7,8,9] let newArr = arr.reduce((preTotal, curValue, index, array) =>{ return preTotal + curValue; }) //reduce()接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。reduceRight则是从右到左开始
  10. find && findIndex
    let arr = [1,2,3,4,5,6,7,8,9] let result = arr.find((item, index) => { if (index == 5) { return item; } }) //find返回数组中符合条件的第一个元素,否则返回undefined,findIndex返回数组中符合条件的第一个元素的下标