Javascript中常见的数组遍历方法总结

数组遍历方法

1、for循环的使用

  • 优化后的for循环,是用临时变量将长度缓存起来,避免了重复获取数组长度,当遍历的数组较长时,优化效果会比较明显。
    <script>
        var arr=[1,2,3,6,4,85]
        for (j = 0, len = arr.length; j < len; j++) {
            console.log(j)
        }
    </script>

2、forEach循环的使用

  • forEach(function(currentValue, index, arr))方法是用来遍历数组,参数是一个回调函数,无返回值,对原数组无影响,不能使用break
    <script>
        // value :数组中的元素,
        // index :对应的索引值
        // array : 当前元素所属的数组对象
        array.forEach((value, index, array) => {
            //执行代码
        })

        // 数组中有几项,回调函数就执行多少次
    </script>

正确使用for循环和forEach循环

  • forEach循环是for循环的简化版

  • 1.在数据长度固定且不需要计算的情况下,for循环的计算效率高于
    forEach

  • 2.在数据比较复杂,且数组长度不固定的情况下,用forEach则更为好

  • 3.forEach是函数,那么就存在函数作用域,而for循环则不存在函数作用域问题,因此在某些情况下则要自己权衡利弊了

3、map的使用(常用)

  • map(function(currentValue, index, arr))方法是用来遍历数组,参数是一个回调函数,有返回值,返回值是一个利用回调函数处理之后的新数组,对原数组无影响,
    <script>
        // value :数组中的元素,
        // index :对应的索引值
        // array : 当前元素所属的数组对象
        
        arr.map((value, index, array) => {

            //处理数据

            return '处理之后的数据'
        })

    </script>

4、filter的使用(常用)

  • 循环数组,有返回值,返回一个新的过滤之后的数组
    <script>
    
        var arr = [73, 84, 56, 22, 100]
        var newArr = arr.filter(item => item > 80) //得到新数组 [84, 100]
        console.log(newArr)

    </script>

5、some()循环的使用(常用)

  • 循环数组,检测到是否有某个值满足条件,有返回值true,否则返回false
    <script>
    let array = [1,2,3,4]
    let flag = array.some(item=>{

        return  item >1
    })
    console.log(flag) // true

    </script>

6、every() 循环的使用

  • 循环数组,检测所有值是否都大于某个值。如果是就返回true,否则false
    <script>
        let array = [1, 2, 3, 4]
        let flag = array.some(item => {
            return item > 1
        })
        console.log(flag) // false

    </script>
  • some和every的区别

  • some循环,检测数据中是否有某个值满足这个条件,如果有,则返回true,如果都不满足否则返回false

  • every循环,检测数组中是否每个值都满足这个条件,如果都满足,才返回true,否则任何一个不满足,就会返回false

7、find() 循环的使用

  • find()方法返回数组中符合测试函数条件的第一个元素。否则返回undefined
    <script>
          let array = [{
                name: '张三',
                gender: '男',
                age: 20
            },
            {
                name: '李四',
                gender: '男',
                age: 20
            }
        ]
        let flag = array.find(item => {
            return item.name === "张三"
        })
        console.log(flag) // {name: "张三", gender: "男", age: 20}

    </script>

8、findIndex() 的使用

  • 对于数组中的每一个元素,findIndex 方法都会执行一次回调函数(利用升序索引),直到操作某个元素并且回调函数的返回值为true时。findIndex 方法将立即返回该回调函数返回 true 的元素的索引值。如果数组中没有任何元素返回 true,则 findIndex 返回 -1。

findIndex 不会改变数组对象。

    <script>
        let array = [1, 5, 6, 9, 8]
        let flag = array.findIndex(item => {
            return item == 9
        })
        console.log(flag) // 打印结果为3 也即是9的索引值

    </script>

9、for of的使用

  • for of 可以正确使用break、continue和return语句
    <script>

        //默认遍历元素
        for (var value of ['a', 'b']) {
                console.log(value);
        }

        // 还可以借助es6新增方法使用 entries(),keys()和values()


        for (let index of ['a', 'b'].keys()) {
            console.log(index);
        }
        // 0
        // 1

        for (let elem of ['a', 'b'].values()) {
            console.log(elem);
        }
        // 'a'
        // 'b'

        for (let [index, elem] of ['a', 'b'].entries()) {
            console.log(index, elem);
        }
        // 0 "a"
        // 1 "b"

    </script>
注意: 此外还有reduce()方法、reduceRight()方法,详情请查看文档 https://es6.ruanyifeng.com/
  • 两种方法的区别是:
    • reduce()方法:reduce接受一个函数作为累加器,数组中的每个值将从左自右进行累加,最终返回一个值。此外函数有四个参数,分别是:上一次的值,当前值,当前值的索引,数组。

    • reduceRight()方法:功能和reduce()一样,都是对数组中的元素进行累加,不同的是从右往左进行累加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值