使用es6怎麼實現兩個變數的轉換

2022-10-24 22:00:39

4種實現:1、採用二進位制互斥或的方法來交換數值,語法「a = a ^ b;b = a ^ b; a = a ^ b;」或「a=(b^=a^=b)^a;」;2、利用陣列下標來交換,語法「a=[a, b];b=a[0];a=a[1]; 」;3、陣列特殊置換法,語法「a = [b, b = a][0]; 」;4、對陣列元素進行提取和賦值,語法「[a, b] = [b, a];」。

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:windows10系統、ECMAScript 6版、Dell G3電腦。

es6實現兩個變數轉換的4種方法

方法一:互斥或置換法

方案分析:這裡採用二進位制互斥或的方法交換數值。互斥或的特點:同數為0,異數為1;將使用者輸入的值分別轉換成二進位制,在進行互斥或,JS裡面的互斥或符號是用shift+6,通過兩次互斥或還是本身這個原理,即可實現兩個數的交換。

注意:其變換形式:a = (b^=a^=b)^a;【一行程式碼搞定兩數置換

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 方法一:互斥或置換法(同數為0,異數為1)
        var a = prompt('請輸入a的值');
        var b = prompt('請輸入b的值');
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        //a = (b ^= a ^= b) ^ a; //與上面三行實現同理只是變成一行程式碼
        document.write('交換後a的值是' + a + '<br>', '交換後b的值是' + b);
    </script>
</body>

</html>
登入後複製

執行結果:

1.png

2.png

3.png

方法二:陣列特殊置換法【進階】

方案分析:這裡使用的是特定陣列的方法,將兩個數直接轉換,首先假設a=6,b=9則有a=[9,b=a][0]>>>a=[9,b=6][0]>>>a=[9,6][0]>>>b=6>>>a[0]=9>>>a=9。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 方法二:陣列置換法
        var a = prompt('請輸入a的值');
        var b = prompt('請輸入b的值');
        a = [b, b = a][0]; 
        document.write('交換後a的值是' + a + '<br>', '交換後b的值是' + b);
    </script>
</body>

</html>
登入後複製

方法三:陣列普通置換法

方案分析:這裡使用的是普通陣列置換的方法,首先將把a,b的值存放在a[a,b]這個陣列中,其次先將a[0]值賦給b,再將a[1]的值賦給a,不這樣會導致a與b的值相等。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 方法三:陣列普通置換法
        var a = prompt('請輸入a的值');
        var b = prompt('請輸入b的值');
        a = [a, b]; //接收使用者輸入的值
        document.write('交換前a,b的值是' + a + '<br>');
        b = a[0]; //將第一值賦給b必須寫在a的前面
        a = a[1]; //將第二值賦給a
        document.write(a);
        document.write(b);
    </script>
</body>

</html>
登入後複製

方法四:ES6賦值法

方案分析:這裡使用的是ES6置換的方法,由於ES6允許我們對陣列和物件提取,所以可以進行變數賦值,來實現兩數直接交換。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 方法四:ES6賦值法
        var a = prompt('請輸入a的值');
        var b = prompt('請輸入b的值');
        [a, b] = [b, a];
        document.write('交換後a的值是' + a + '<br>', '交換後b的值是' + b);
    </script>
</body>

</html>
登入後複製

【相關推薦:、】

以上就是使用es6怎麼實現兩個變數的轉換的詳細內容,更多請關注TW511.COM其它相關文章!