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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

js两个变量互换值的更多相关文章

  1. JS基础语法---练习:交换两个变量的值

    * JavaScript简称为JS * JavaScript是什么?     * 是一门脚本语言:不需要编译,直接运行     * 是一门解释性的语言:遇到一样代码就解释一行代码     * C#语言 ...

  2. JAVA交换两个变量的值-(不使用第三变量)

    以下方法的根本原理就是: 借助第三个变量 c = a; a = b; b = c; 运算符-不借助第三变量: a = a+b; b = a-b; a = a-b; 为运算符-不借助第三个变量: (此种 ...

  3. JavaScript两个变量的值交换的多种方式

    前言 该文是在看别人博客的时候发现的,很有趣的一篇文章,这里摘录到自己的简书中,供给各位读者学习本文主要描述,如何不使用中间值,将两个变量的值进行交换.前三种只适用于number类型的数值交换,第四和 ...

  4. Java基础知识强化05:不借助第三个变量实现两个变量互换

    1. 不借助第三个变量实现两个变量互换 代码如下: package himi.hebao; /** * 不借助第三个变量实现,两个变量互换 * 这里利用^异或实现两个变量的互换 * @author A ...

  5. python不使用第三方变量,交换两个变量的值

    #不使用第三个变量交换两个变量的值 a=1 b=2 a,b=b,a#python的直接交换 #另一种交换方法 a=a+b#a=3 b=2 b=a-b#a=3 b=1 a=a-b#a=2 b=1 pri ...

  6. C语言:指针实现交换两个变量的值

    用指针交换两个变量的值(10分) 题目内容: 用指针交换两个变量的值 主函数参考: int main( ) { int a,b; scanf("%d%d",&a,& ...

  7. Python两个变量的值进行交换的方法

    Python两个变量的值进行交换的方法 使用第三方变量: '''这是第一种赋值方法,采用第三方变量''' c = a a = b b = c 使用两个变量: '''使用两个变量''' a = a+b ...

  8. 【剑指offer】不使用新变量,交换两个变量的值,C++实现

    # 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...

  9. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方 ...

随机推荐

  1. 团队作业-Beta冲刺(1/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  2. 第09组 Beta冲刺(1/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  3. 【软工实践】Beta版本演示

    团队信息 队名:女生都队 组长博客: 博客链接 成员 学号 史恩泽(组长) 031702122 施金海 031702121 阮君曦 031702116 陈银山 031702137 李季城 031702 ...

  4. codeDecodeError ascii codec can't decode byte 0xe2 in position 44 ordinal not in range(128)

  5. python 上下文管理器contextlib.ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  6. 转 全新多媒体共享器Ipush推送|Miracast WIFI无线同屏推送

    http://www.52bjw.cn/product-info/5767857.html 操作指南及注意事项 (draft) miracast和dlna/airplay分别工作在wifi direc ...

  7. 【LeetCode算法-28/35】Implement strStr()/Search Insert Position

    LeetCode第28题 Return the index of the first occurrence of needle in haystack, or -1 if needle is not ...

  8. CentOS7 安装特定版本的Docker

    先卸载旧版本   sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-late ...

  9. [ Docker ] 基础概念

    目录- 什么是容器- 虚拟化和容器技术- docker 的基本概念 1. 什么是容器 容器英文:Container,容器是一种基础工具:泛指任何可以用于容纳其他物品的工具,可以部分或者完全封闭,被用于 ...

  10. TP-Link無線路由器(分享器)頻寬控管

    需求: 對十個終端進行頻寬的控管(有線連接),也需要無線的連線 設備: 兩台TP-Link AC750(每台四個LAN端口),一台TP-Link hub 由於資金有限,兩個路由器最多也只有8個接口,如 ...