一个经典的问题,“两个变量之间值的交换”。
1、 引入临时变量进行数据交换
tmp = a;
a = b;
b = tmp;
引入临时变量,最最基本的方法,看着很low,但效率确实很高,经典的才是最优雅的。
2、 用对象进行数据交换
a = {a : b, b : a};
b = a.b;
a = a.a;
利用对象的键值对进行数据交换
3、用数组进行数据交换(一)
a = [a, b];
b = a[0];
a = a[1];
利用数组下标进行数据交换
4、用数组进行数据交换(二)
a = [b,b=a][0];
5、用异或操作进行数据交换(一)
a ^=b;
b ^=a;
a ^=b;
6、用异或操作进行数据交换(二)
a = (b = (a ^= b) ^ b) ^ a;
7、用数字之间的加减运算实现数据交换(仅适用于数字)(一)
a = a + b;
b = a - b;
a = a - b;
8、用数字之间的加减运算实现数据交换(仅适用于数字)(二)
a = b -a +(b = a);
9、用ES6的解构赋值语法实现数据交换
[a,b] = [b,a];
扩展:交换数组中的两个元素(用数组的splice() 方法)
array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array[0] = array.splice(3, 1, array[0])[0]; //交换第0个和第3个元素