js forEach for区别

Posted web前端开发技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js forEach for区别相关的知识,希望对你有一定的参考价值。

1、循环中断差别

具体见示例代码:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>js for forEach区别 </title>
    </head>

    <body>
        <script src="https://cdn.bootcss.com/lodash.js/4.17.10/lodash.min.js"></script>
        <script type="text/javascript">
            let arr = [1, 2, 3, 4]
            for(let i = 0; i < arr.length; i++) {
                if(arr[i] == 2) {
                    continue;
                    //break;
                }
                console.log(arr[i],   for)
            }
            for(let i in arr) {
                if(i == 2) {
                    break;
                }
                console.log(arr[i],    for in)
            }
            for(let i of arr) {
                if(i == 2) {
                    break;
                }
                console.log(i,    for of)
            }
            arr.forEach(val => {
                if(val == 2) {
                    //此处的return false 仅仅相当于continue
                    return false;
                    //break或者continue均不能使用 会报错,对于map filter方法一样会报错
                    //break;
                    //continue
                }
                console.log(val,    forEach)
            })
        </script>
    </body>

</html>

数组的迭代方法:every、filter、forEach、map、some均不能使用break或者continue进行中断循环。

以上几个函数的参数都是:一个回调函数 和 一个this的指向

array.map(function(currentValue,index,arr), thisValue)

 

2、数组变化时差别

(1)数组添加操作

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>js for forEach区别 </title>
    </head>

    <body>
        <script src="https://cdn.bootcss.com/lodash.js/4.17.10/lodash.min.js"></script>
        <script type="text/javascript">
            let arr = [1, 2, 3, 4]
            for(let i = 0; i < arr.length; i++) {
                if(arr[i] == 2) {
                    //对于添加时,for可以遍历新数组
                    arr.push(5)
                }
                // 输出1 2 3 4 5
                console.log(arr[i],   for)
            }

            arr.forEach(val => {
                if(val == 2) {
                    //对于添加时,forEach
                    arr.push(5)
                }
                // 输出1 2 3 4 5
                console.log(val,    forEach)
            })
        </script>
    </body>

</html>

(2)数组更新、删除操作

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>js for forEach区别 </title>
    </head>

    <body>
        <script src="https://cdn.bootcss.com/lodash.js/4.17.10/lodash.min.js"></script>
        <script type="text/javascript">
            let arr = [1, 2, 3, 4]
            for(let i = 0; i < arr.length; i++) {
                if(arr[i] == 2) {
                    //对于更新、删除时,for可以遍历新数组
                    arr[1] = 100
                    //arr.splice(i,1)
                }
                // 输出1 100 3 4
                console.log(arr[i],   for)
            }

            arr.forEach((val, i) => {
                if(val == 2) {
                    //对于更新、删除时,forEach可以遍历新数组
                    val = 100
                    //arr.splice(i,1)
                }
                // 输出1 100 3 4
                console.log(val,    forEach)
            })
        </script>
    </body>

</html>

 

以上是关于js forEach for区别的主要内容,如果未能解决你的问题,请参考以下文章

js forEach for区别

js的for in循环和java里的foreach循环的区别

js中forEach的用法forEach如何跳出循环forEach与for之间的区别

for循环与forEach循环的区别

js 各种循环的区别与用法(for in,forEach,for of)

什么?JS 异步原来还能这么处理?