我想在0和1之间切换一个变量。如果是0,我就设它为1,如果是1,我就设它为0。
这是一个非常基本的运算,我经常写,我想研究一下最短,最清晰的方法。这是我目前为止最好的:
v = (v == 0 ? 1 : 0);
你能改进一下吗?
编辑:这个问题问的是如何在保持清晰的情况下用最少的字符写出上面的语句——为什么这“不是一个真正的问题”?这并不是一个代码-高尔夫练习,尽管一些有趣的答案来自于把它当作高尔夫的人——很高兴看到高尔夫以一种建设性和发人深省的方式被使用。
我想在0和1之间切换一个变量。如果是0,我就设它为1,如果是1,我就设它为0。
这是一个非常基本的运算,我经常写,我想研究一下最短,最清晰的方法。这是我目前为止最好的:
v = (v == 0 ? 1 : 0);
你能改进一下吗?
编辑:这个问题问的是如何在保持清晰的情况下用最少的字符写出上面的语句——为什么这“不是一个真正的问题”?这并不是一个代码-高尔夫练习,尽管一些有趣的答案来自于把它当作高尔夫的人——很高兴看到高尔夫以一种建设性和发人深省的方式被使用。
当前回答
如果v的可能值只有0和1,那么对于任意整数x,表达式为: v = Math.pow((Math。Pow (x, v) - x), v); 将切换该值。
我知道这是一个丑陋的解决方案,而且OP并没有想要这个…但我在厕所的时候想到了另一个解决方案:P
其他回答
一般来说,当你需要在两个值之间切换时,你可以从两个切换值的和中减去当前值:
0,1 -> v = 1 - v 1,2 -> v = 3 - v 4,5 -> v = 9 - v
如果你不关心除1以外的任何可能性
v = v ? 0 : 1;
在上述情况下,如果v为0、false、undefined或null, v将最终为1。注意使用这种方法-即使v是"hello world", v也将为0。
好吧,我们知道在javascript中只有布尔比较也会给你预期的结果。
比如v = v = 0就足够了。
下面是它的代码:
Var v = 0; Alert ("if v = 0 output: " + (v == 0)); setTimeout(函数(){ V = 1; alert("if v = 1 Output: " + (v == 0)); }, 1000);
JSFiddle: https://jsfiddle.net/vikash2402/83zf2zz0/
希望这对你有所帮助:)
你可以简单地使用:
v = 1 - v;
当然,这是假设变量初始化正确,即它只有值0或1。
另一种方法更短,但使用了不太常见的操作符:
v ^= 1;
编辑:
清楚:清楚;我从来没有把这个问题作为代码高尔夫来处理,只是为了找到一种不使用任何模糊技巧(如操作符的副作用)的简单方法来完成任务。
v = Number(!v)
它将反向布尔值类型转换为Number,这是期望的输出。