這個問題看似很基礎,但是有很多的實現方式,你知道的有多少呢,網上也有很多的方法,下面就來總結一下
臨時變數其實很好理解,通過乙個中間變數進行交換值
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=
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
陣列與迭代器的解構
語法:[ variable1, variable2, ..., variablen ] = array;
這將為variable1到variablen的變數賦予陣列中相應元素項的值
可以去看看解構的賦值:
let a = "one",b = "two";
[a, b] = [b, a];
console.log(a, b);//two one
var a=1,b=2;
a=(function()
finally}
)();
或字串
var a = "aaa",
b = "bbb";
a = (function() finally
})();
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(k0] = 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
面試題 互換兩個變數的值
互換兩個任意值變數的值,如 int a 1 int b 2 方案一 用變數相加減的方法 面試中使用 a a b b a b a a b 方案二 用變數相加減賦值的方法 面試中使用 b a b a b 方案三 用異或的特點實現 面試中使用 a a b b a b a b b a a a b a b a...
互換兩個變數,不使用中間變數
第一種方法 a a b b a b a a b 如下 cpp view plain copy include stdio.h int main void 缺點 可能越界 第二種方法 解決方法 a b異或的結果 和a異或得b 和b異或得a a a b b a b a a b 如下 cpp view p...
交換兩個變數的值
交換兩個變數的值 交換兩個變數的值是我們學習c語言常見的問題,通常我們採取的方式是定義中間變數,通過中間變數交換這兩個變數值。1 直接在主函式裡完成 int a 2,b 3 int t t a a b b t 2 通過定義swap 完成交換,其中可以通過引用 位址傳遞完成變數值交換 引用 inclu...