zoukankan      html  css  js  c++  java
  • js两个变量互换值

    js两个变量交换值

    这个问题看似很基础,但是有很多的实现方式,你知道的有多少呢,网上也有很多的方法,下面就来总结一下

    • 中间变量(临时变量)
      临时变量其实很好理解,通过一个中间变量进行交换值
      var strA = "a";
      var strB = "b";
      var strC;//中间变量
      # 开始
      strC = strB;//strC值是b
      strB = strA;//此时strB已经变成strA
      strA = strC;//让strA赋值strB的值
    
    • 使用加减(针对数字)
      var a=2,b=3;
      加法算:
      a +=b;//a=5,b=3
      b =a-b;//b=2
      a =a-b;//b=3
    
      减法算:
      a +=b;//a=5
      b = a-b;//b=2;
      a -=b;//a=3
      两种方法都需要两个值相加,然后做对于的加减算
    
    • 对象和数组
      var a="1",b="2";
      对象的方法:
      先把a变成一个对象,即a={a:b,b:a}
      b=a.a;//1
      a=a.b;//2
      数组的方法:
      数组其实和对象的思想差不多
      a=[a,b];
      b=a[0];
      a=b[1];
    
    
    • 万能法(运用运算符优先级)
      公式:a=[b,b=a][0]
      var a="1",b="code";
      a=[b,b=a][0];//这样就成功了
      console.log(a,b);//code  1
    
    • ES6的解构赋值

      什么是解构赋值?
      解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量。这种赋值语法极度简洁,同时还比传统的属性访问方法更为清晰。

      数组与迭代器的解构
      语法:[ variable1, variable2, ..., variableN ] = array;
      这将为variable1到variableN的变量赋予数组中相应元素项的值
    

    可以去看看解构的赋值:http://es6.ruanyifeng.com/#docs/destructuring

      let a = "one",b = "two";
      [a, b] = [b, a];
      console.log(a, b);//two one
    
    • 利用try catch交换
    var a=1,b=2;
    a=(function(){;
        try{return b}
        finally{b=a}}
    )();
    或字符串
    var a = "aaa",
        b = "bbb";
    a = (function() {;
        try {
            return b
        } finally {
            b = a
        }
    })();
    console.log(a, b);
    
    
    • 异或运算(针对数字)
      var a = 1; // 二进制:0001
      var b = 2; // 二进制:0010
      a = a ^ b; // 计算结果:a = 0011, b = 0010
      b = a ^ b; // 计算结果:a = 0011, b = 0001
      a = a ^ b; // 计算结果:a = 0010, b = 0001
      自己可以动手试一下
    
      例子:
      var a = 0;
      var b = 1;
      a = (b = (a ^= b) ^ b) ^ a;
      console.log(a,b)
    
      例子:
      var a = 0; // 二进制:0001
      var b = 1; // 二进制:0010
      a ^=b;
      b ^=a;
      a ^=b;
      console.log(a,b)
    
    • 数组的两个值的交换
    var arr = [item0,item1,...,itemN];
    //最初使用这段代码来交换第0个和第K(k<N)个元素
    arr[0] = arr.splice(k, 1, arr[0])[0];
    
    var arr = [1,2,3,"aaa","bbb","ccc"];
    arr[0] = arr.splice(3, 1, arr[0])[0];
    console.log(arr.toString())//aaa,2,3,1,bbb,ccc


    作者:程序蜗牛
    链接:https://www.jianshu.com/p/fb863e73862f
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    C# 创建与读写配置文件
    C# 绘图三种方式
    WindowsForms获取服务名称
    Hbase之JAVA API不能远程访问问题解决
    Jenkins之自动构建
    Jenkins配置匿名用户拥有只读权限
    XShell中文乱码问题解决
    mybatis之关联(2)
    mybatis之动态SQL
    mybatis之一对一关联
  • 原文地址:https://www.cnblogs.com/showcase/p/10853664.html
Copyright © 2011-2022 走看看