我想对值应用按位运算,如果值为0,则将其设置为0;如果值大于0,则将其设置为1。
具体而言,我希望在JavaScript中使用灵魂,Number(Boolean(value))
0 -> 0
1 -> 1
2 -> 1
3 -> 1
4 -> 1
...
我可以通过按位运算来实现吗? 算术运算也很好。
答案 0 :(得分:4)
insertBefore
, !!x
是这样做的惯用方法。
答案 1 :(得分:2)
x && 1
做到了。
for(x=0; x<5; x++) {
console.log(x & 1)
}
写入:
0
1
1
1
1
这是一个逻辑AND,但Javascript的类型规则似乎将结果保持为数字。
但你应该考虑有多少JS编码员本能地理解这一点。
优先考虑简洁性,我个人会使用三元运算符:
x == 0 ? 0 : 1
...虽然您要求避免的选项也非常清晰:
Number(Boolean(x))
你似乎暗示这可能比其他选择更慢。
Number
和Boolean
是语言内置函数,可以执行非常简单的操作,我们希望这些操作非常便宜请注意您的要求:
如果值为0则将其变为0;如果值大于零,则将其变为1
...如果x
为否定,则不会指定您想要发生的事情。这个答案可以让你相应调整。