• js---交换两个值


    这篇文章总结了七种办法来交换a和b的变量值
    
    var a = 123;
    var b = 456;
    交换变量值方案一
    最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了
    var t;
    t = a;
    a = b;
    b = t;
    首先把a的值存储到临时变量中,然后b赋值给a,最后拿出临时变量中的a值赋给b,这个办法是最基本的了
    交换变量值方案二
    下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有关系的值,这样可以先改变另一个变量值, 最后改变原修改的变量值
    比如这个
    a += b;
    b = a - b;
    a -= b;
    让a先变成a与b的‘和'(也可以换成a和b的差,一样的) ,‘和'减去b巧妙的得到了a的变量值赋予b ,再通过‘和'减去a的值得到了b的值赋予a,或者是下面的变式(差的形式)
    a -= b;
    b = a + b;
    a = b - a;
    但是感觉和的形式更容易理解
    
    交换变量值方案三
    
    这种方法对于第一次学习JavaScript的同学来说可能不了解,因为我们JavaScript很少会用到位操作,这是我在以前看算法竞赛书的时候学来的,通过底层位运算来进行交换变量值,也是上面的方案演化来的
    a ^= b;
    b ^= a;
    a ^= b;
    了解一下吧,C++甚至可以a^=b^=a^=b来完成任务,但我发现JavaScript不可以
    不过我们可以这样
    
    a = (b^=a^=b)^a;
    交换变量值方案四
    
    把a先变成了一个对象,这个对象保存着应该交换后的键值对,最后赋值搞定
    a = {a:b,b:a};
    b = a.b;
    a = a.a;
    交换变量值方案五
    
    和上面的方法很像,只不过对象换成了数组
    a = [a,b];
    b = a[0];
    a = a[1];
    交换变量值方案六
    
    这个办法十分的巧妙,不是我想出来的,想出来的人一定是大神,除非他是托梦想出来的,简单粗暴一行代码交换了a和b的变量值
    a = [b,b=a][0];
    根据运算符优先级,首先执行b=a,此时的b直接得到了a的变量值,然后一步数组索引让a得到了b的值(简直不能再厉害)
    
    交换变量值方案七
    
    最后我的方案是利用了ES6的解构赋值语法,它允许我们提取数组和对象的值,对变量进行赋值,不过我现在测试用的chrome浏览器已经实现了
    [a,b] = [b,a];
    可以看到解构赋值语法让我们的交换变量值变得超级简单,这个解构赋值语法要是讲的话要讲很多不是今天的重点,以后会在再总结现在就不讲了
    

      

  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/jcxfighting/p/12345380.html
Copyright © 2020-2023  润新知