不使用条件语句实现传入x返回y、传入y返回x的JS函数
var x = 10; var y = 20;
以下是几种无需条件语句的实现方案:
算术运算法(仅适用于数字类型)
利用两数之和减去输入值得到另一个值,逻辑最简单:function swap(num) { return x + y - num; }验证:传入10返回
30-10=20,传入20返回30-20=10,完全符合要求。异或运算法(仅适用于整数类型)
利用异或运算的特性实现:function swap(num) { return num ^ x ^ y; }原理:
a ^ a = 0、a ^ 0 = a,传入x时运算结果为x ^ x ^ y = y,传入y时运算结果为y ^ x ^ y = x。对象映射法(通用性最强,支持所有可作为对象键的基础类型)
直接构建反向映射的对象取值:function swap(val) { return { [x]: y, [y]: x }[val]; }原理:提前把
x对应y、y对应x的映射关系写到对象里,传入参数直接作为键读取对应值即可,没有任何条件判断逻辑。数组索引法
利用布尔值转数字的特性做索引取值:function swap(val) { return [y, x][Number(val === y)]; }原理:布尔值转数字时
true为1、false为0,传入y时取索引1的值x,传入x时取索引0的值y。
内容的提问来源于stack exchange,提问作者kamran rafi
相关产品推荐
相关产品推荐

