a=1;b=2交换这两个值的方法?

2020-11-29  本文已影响0人  凉城十月

共有四种方法。

1. 使用中间变量t(这是最基础的一种方法)
var t
t = a //a=1,t=1,b=2
a = b //a=2,t=1,b=2
b = t //a=2,t=1,b=1
2. 使用ES6的解构赋值

[a, b] = [b, a]
结构赋值适用于字符串、数字、布尔值和对象等,语句简短。对于大多数情况都可以优先使用这种方式。

3. 加减法

这种方法不需要使用额外的内存,因为他没有用到其他的临时变量或者是临时数组。

let a = 1;
let b = 2;

a = a + b; // a=3,b=2
b = a - b; //a=3,b=1
a = a - b; //a=2,b=1

这种方法虽然灵活,但是也有很大的局限。
1.只能是整数
2.在第一步a=a+b时要注意数字溢出(总和必须小于Number.MAX_SAFE_INTEGER)。

4. 按位XOR运算符(异或^)

这是XOR真值表。

a b a ^ b
0 0 0
1 1 0
0 1 1
1 0 1

那么使用这个我们如何交换a、b的值呢?

let a = 1; //a为001
let b = 2; //b为010
a=a^b; //001^010,a为011
b=a^b; //011^010,b为001
a=a^b; //011^001,a为010
a; //2
b; //1

按位XOR运算符只能交换整数。

上一篇 下一篇

猜你喜欢

热点阅读