1. 程式人生 > 實用技巧 >前端JS迴圈操作一覽

前端JS迴圈操作一覽

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>前端迴圈一覽</title>
</head>

<body>
    <script>
        // 1、while迴圈
        console.log('--------------where迴圈Array--------------');
        var i = 0;

        while (i < 10)

        {
            console.log(i)
            i += 1;

        }
        // 1、do-while迴圈,先執行後判斷,至少執行一次
        console.log('--------------do-where迴圈Array--------------');
        var i = 0;
        do {
            console.log(i)
            i += 1;

        } while (i < 10)
        // 2、for-of迴圈 (Array、Map、Set、String、Arguments )
        console.log('--------------for-of迴圈Array--------------');
        let arr = [1, 2, 3, 4, 5]
        for (let value of arr) {
            console.log(value)
        }
        console.log('--------------for-of迴圈Map--------------');
        //第一種建立map的方式
        let map = new Map();
        map.set('a', 1).set('b', 2).set('c', 3)
        console.log(map)
        //第二種建立map的方式
        let map1 = new Map([
            ['a', 1],
            ['b', 2],
            ['c', 3]
        ])
        console.log(map1);
        for (let [key, value] of map) {
            console.log(key, value)
        }
        console.log('--------------for-of迴圈Set--------------');
        let set = new Set([1, 2, 2, 3, 3, 4, 5, 6])
        for (let value of set) {
            console.log(value)
        }
        console.log('--------------for-of迴圈String--------------');
        let str = '我是迴圈String的程式碼';
        for (let value of str) {
            console.log(value);
        }
        console.log('--------------for-of迴圈Arguments--------------');

        function func() {
            for (let value of arguments) {
                console.log(value)
            }
        }
        func(1, 3, 4);
        console.log('--------------for-of迴圈object--------------');
        let obj1 = {
            a: 1,
            b: 2,
            c: 3
        }
        //第一種方式,求出它的鍵
        for (let key of Object.keys(obj1)) {
            console.log(key)
        }
        //第二種方式,求出它的值
        for (let key of Object.values(obj1)) {
            console.log(key)
        }
        //第三種方式,Object.entries返回一個可列舉的鍵值對
        for (let [key, value] of Object.entries(obj1)) {
            console.log(key, value)
        }
        // 3、for-in迴圈的使用(key in json)
        console.log('--------------for-in迴圈object--------------');
        let obj = {
            a: 1,
            b: 2,
            c: 3
        }
        for (let key in obj) {
            console.log(key, obj[key])
        }
        //4、map迴圈的使用
        console.log('--------------map迴圈Array--------------');
        let arr1 = ['a', 'b', 'c'];
        let arr3 = [{
            'a': 'a'
        }, {
            'a': 'b'
        }, {
            'a': 'c'
        }];
        let newArr1 = arr1.map((value, index) => {
            console.log(value, index)
            if (index == 0) {
                value = 'change'
            }
            return value
        }).filter(value => {
            // console.log(item,1234)
            return value == 'change'
        })
        arr3.map((value, index) => {
            if (index == 0) {
                value.a = 'change'
            }
        })
        console.log(arr1, arr3, newArr1)
        //4、forEach迴圈的使用
        console.log('--------------forEach迴圈Array--------------');
        let arr2 = ['a', 'b', 'c'];
        let arr4 = [{
            'a': 'a'
        }, {
            'a': 'b'
        }, {
            'a': 'c'
        }];
        let newArr2 = arr2.forEach((value, index) => {
            console.log(value, index)
            if (index == 0) {
                value = 'change'
            }
            return value
        })
        arr4.forEach((value, index) => {
            if (index == 0) {
                value.a = 'change'
            }
        })
        console.log(arr2, arr4, newArr2)
        console.log('--------------forEach與map的區別--------------');
        console.log(
            '可以從上面的程式碼中看見map迴圈可以接受返回的一個新陣列並進行鏈式操作,forEach不能返回一個新陣列;改變值的方面,forEach跟map都不能改變一個不是由物件構成的陣列,因為改變物件改變的是引用地址,不是物件的值'
        );
        //5、every迴圈的使用,判斷返回的陣列每一項是否全部滿足條件
        console.log('--------------every迴圈Array--------------');
        let arr5 = [2, 3, 4, 5]
        let bool1 = arr5.every(item => item > 2)
        console.log(bool1)
        //6、some迴圈的使用,判斷返回的陣列是否滿足1個或1個以上條件
        console.log('--------------some迴圈Array--------------');
        let arr6 = [2, 3, 4, 5]
        let bool2 = arr6.some(item => item > 2)
        console.log(bool2)
        //7、filter迴圈的使用,將滿足條件的值篩選出來
        console.log('--------------filter迴圈Array--------------');
        let arr7 = [2, 3, 4, 5];
        let arr8 = arr7.filter(item => item > 2)
        console.log(arr8)
    </script>
</body>

</html>