一个经典的问题,“两个变量之间值的交换”。

1、 引入临时变量进行数据交换

  1. tmp = a;
  2. a = b;
  3. b = tmp;

引入临时变量,最最基本的方法,看着很low,但效率确实很高,经典的才是最优雅的。

2、 用对象进行数据交换

  1. a = {a : b, b : a};
  2. b = a.b;
  3. a = a.a;

利用对象的键值对进行数据交换

3、用数组进行数据交换(一)

  1. a = [a, b];
  2. b = a[0];
  3. a = a[1];

利用数组下标进行数据交换

4、用数组进行数据交换(二)

  1. a = [b,b=a][0];

5、用异或操作进行数据交换(一)

  1. a ^=b;
  2. b ^=a;
  3. a ^=b;

6、用异或操作进行数据交换(二)

  1. a = (b = (a ^= b) ^ b) ^ a;

7、用数字之间的加减运算实现数据交换(仅适用于数字)(一)

  1. a = a + b;
  2. b = a - b;
  3. a = a - b;

8、用数字之间的加减运算实现数据交换(仅适用于数字)(二)

  1. a = b -a +(b = a);

9、用ES6的解构赋值语法实现数据交换

  1. [a,b] = [b,a];

扩展:交换数组中的两个元素(用数组的splice() 方法)

  1. array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  2. array[0] = array.splice(3, 1, array[0])[0]; //交换第0个和第3个元素