“OR”的速记运算符

时间:2018-02-12 12:13:21

标签: javascript php operators conditional-operator shorthand

我只是想知道是否有办法做某事:

if(myVar === 1|2|5) {do something} 

if(myVar === (1 || 2 || 5)) { do something }

将作为

if(myVar === 1 || myVar === 2 || myVar === 5) {do something}

使用开关盒也不是可选的解决方案。它也应该适用于任何数据类型,不仅仅是数字,还有字符串,数组。基本上是比较。我已经尝试了前两个例子但它没有用,可能它并不意味着那样工作。

我对JS和PHP特别感兴趣,欢迎其他语言的其他语言。

更新

“in_array”或“indexOf”或编写内联语句不是我要找的答案。因为我了解这些我开发了8年以上的功能。

让我解释一下: 因为我正在使用react我正在学习JS,我在javascript语法中发现了许多新技巧,如:

myArray.find(item => (item.id===something))  vs .find(function(item) {....})
const printHello = () => { return "hello" }  vs const printHello = function() { .... }
[1,2,3,4,...varWithOtherNumbers] vs concat

还有很多其他技巧。

所以我只是想知道是否有一个不为人知的javascript语法技巧。

2 个答案:

答案 0 :(得分:2)

你可以这样做吗?



var a = 4;
if([1, 2, 3, 4, 5, 6, "something else"].indexOf(a) !== -1){
   console.log("It is a match!");
}




在PHP中,您可以使用in_array

我知道这不是简写和完全不同的方法,但是这就是诀窍!

答案 1 :(得分:2)

PHP

$a = 5;

if(in_array($a, [1,2,3,4,5,6,7]))
{
   echo "Gotcha!";
}

更短

echo in_array($a, [1,2,3,4,5,6,7]) ? "Found you" : "Not found";

<强>的Python

这家伙有更短的版本

>>> 4 in [1, 2, 3, 4, 5] // Outputs True

<强>红宝石

[1, 2, 3].include ? 5