JavaScript交换两个变量值的七种解决方案

最近在写位操做的时候忽然想到了这个问题,忽然想总结一下,交换变量值的问题可能使咱们学习编程语言接触到的比较早的逻辑问题,小伙伴或多或少会两种解决的方法,本文提供了七种解决的方法,下面跟着小编来一块儿看看吧。
 
 

前言算法

这篇文章总结了七种办法来交换a和b的变量值chrome

?
1
2
var a = 123;
var b = 456;

交换变量值方案一编程

最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了数组

?
1
2
3
4
var t;
t = a;
a = b;
b = t;

首先把a的值存储到临时变量中,而后b赋值给a,最后拿出临时变量中的a值赋给b,这个办法是最基本的了浏览器

交换变量值方案二编程语言

下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有关系的值,这样能够先改变另外一个变量值, 最后改变原修改的变量值 学习

好比这个测试

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

让a先变成a与b的‘和'(也能够换成a和b的差,同样的) ,‘和'减去b巧妙的获得了a的变量值赋予b ,再经过‘和'减去a的值获得了b的值赋予a,或者是下面的变式(差的形式)spa

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

可是感受和的形式更容易理解.net

交换变量值方案三

这种方法对于第一次学习JavaScript的同窗来讲可能不了解,由于咱们JavaScript不多会用到位操做,这是我在之前看算法竞赛书的时候学来的,经过底层位运算来进行交换变量值,也是上面的方案演化来的

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

了解一下吧,C++甚至能够a^=b^=a^=b来完成任务,但我发现JavaScript不能够 

不过咱们能够这样

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

交换变量值方案四

把a先变成了一个对象,这个对象保存着应该交换后的键值对,最后赋值搞定

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

交换变量值方案五

和上面的方法很像,只不过对象换成了数组

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

交换变量值方案六

这个办法十分的巧妙,不是我想出来的,想出来的人必定是大神,除非他是托梦想出来的,简单粗暴一行代码交换了a和b的变量值

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

根据运算符优先级,首先执行b=a,此时的b直接获得了a的变量值,而后一步数组索引让a获得了b的值(简直不能再厉害)

交换变量值方案七

最后个人方案是利用了ES6的解构赋值语法,它容许咱们提取数组和对象的值,对变量进行赋值,不过我如今测试用的chrome浏览器已经实现了

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

能够看到解构赋值语法让咱们的交换变量值变得超级简单,这个解构赋值语法要是讲的话要讲不少不是今天的重点,之后会在再总结如今就不讲了

总结

本文提到了这么多交换变量值的方法,不知道还有没有其余办法,虽然它是一个可有可无的问题,不过能够练一练咱们的脑洞。但愿本文的内容对你们的学习或者工做能带来必定的帮助,若是有疑问你们能够留言交流。

相关文章
相关标签/搜索