1. 程式人生 > >js兩個變量互換值

js兩個變量互換值

urn tostring 聯系 www ams var 針對 array 中間

js兩個變量交換值

這個問題看似很基礎,但是有很多的實現方式,你知道的有多少呢,網上也有很多的方法,下面就來總結一下

  • 中間變量(臨時變量)
  臨時變量其實很好理解,通過一個中間變量進行交換值
  var strA = "a";
  var strB = "b";
  var strC;//中間變量
  # 開始
  strC = strB;//strC值是b
  strB = strA;//此時strB已經變成strA
  strA = strC;//讓strA賦值strB的值
  • 使用加減(針對數字)
  var a=2,b=3;
  加法算:
  a +=b;//a=5,b=3
  b =a-b;//b=2
  a =a-b;//b=3

  減法算:
  a +=b;//a=5
  b = a-b;//b=2;
  a -=b;//a=3
  兩種方法都需要兩個值相加,然後做對於的加減算
  • 對象和數組
  var a="1",b="2";
  對象的方法:
  先把a變成一個對象,即a={a:b,b:a}
  b=a.a;//1
  a=a.b;//2
  數組的方法:
  數組其實和對象的思想差不多
  a=[a,b];
  b=a[0];
  a=b[1];

  • 萬能法(運用運算符優先級)
  公式:a=[b,b=a][0]
  var a="1",b="code";
  a=[b,b=a][0];//這樣就成功了
  console.log(a,b);//code  1
  • ES6的解構賦值

    什麽是解構賦值?
    解構賦值允許你使用類似數組或對象字面量的語法將數組和對象的屬性賦給各種變量。這種賦值語法極度簡潔,同時還比傳統的屬性訪問方法更為清晰。

  數組與叠代器的解構
  語法:[ variable1, variable2, ..., variableN ] = array;
  這將為variable1到variableN的變量賦予數組中相應元素項的值

可以去看看解構的賦值:http://es6.ruanyifeng.com/#docs/destructuring

  let a = "one",b = "two";
  [a, b] = [b, a];
  console.log(a, b);//two one
  • 利用try catch交換
var a=1,b=2;
a=(function(){;
    try{return b}
    finally{b=a}}
)();
或字符串
var a = "aaa",
    b = "bbb";
a = (function() {;
    try {
        return b
    } finally {
        b = a
    }
})();
console.log(a, b);

  • 異或運算(針對數字)
  var a = 1; // 二進制:0001
  var b = 2; // 二進制:0010
  a = a ^ b; // 計算結果:a = 0011, b = 0010
  b = a ^ b; // 計算結果:a = 0011, b = 0001
  a = a ^ b; // 計算結果:a = 0010, b = 0001
  自己可以動手試一下

  例子:
  var a = 0;
  var b = 1;
  a = (b = (a ^= b) ^ b) ^ a;
  console.log(a,b)

  例子:
  var a = 0; // 二進制:0001
  var b = 1; // 二進制:0010
  a ^=b;
  b ^=a;
  a ^=b;
  console.log(a,b)
  • 數組的兩個值的交換
var arr = [item0,item1,...,itemN];
//最初使用這段代碼來交換第0個和第K(k<N)個元素
arr[0] = arr.splice(k, 1, arr[0])[0];

var arr = [1,2,3,"aaa","bbb","ccc"];
arr[0] = arr.splice(3, 1, arr[0])[0];
console.log(arr.toString())//aaa,2,3,1,bbb,ccc


作者:程序蝸牛
鏈接:https://www.jianshu.com/p/fb863e73862f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

js兩個變量互換值