Skip to content

交换数据

在不增加变量的情况下如何调换两个变量值

以下两个方法仅对数字有效

方法一

js
let a = 3;
let b = 4;

a = a + b; // 7
b = a - b; // 3
a = a - b; // 4

方法二

js
let a = 3;
let b = 4;

a = a ^ b; // 7
b = b ^ a; // 3
a = a ^ b; // 4

以下两个方法对数字和字符串都能生效的方法

方法三

js
let a = "hello",
  b = "world";
a = [b, b = a][0];

方法四

js
let a = "hello",
  b = "world";
[a, b] = [b, a]; // ES6的spread语法

数组交换数据

js
function swap(arr, i, j) {
  if (i === j) return;
  arr[i] = arr[i] ^ arr[j];
  arr[j] = arr[i] ^ arr[j];
  arr[i] = arr[i] ^ arr[j];
}