2017-08-17 21 views
0

我覺得我碰到這個了很多事,直觀,應該有辦法做這樣的事情:的Javascript速記如果val等於一兩

if (userType ==="admin" || userType === "superUser"){ 
// do stuff 
} 

在一個更優雅的方式,像這樣:

if (userType === ("admin" || "superUser")){ 
// do stuff 
} 

顯然,這^不起作用,因爲如果第一個值解析爲真,這將永遠不會檢查是否是第二個(「超級用戶」)。

是否有速記在JS if語句中執行此操作,您不必重複變量名稱?

開關語句不計數! ; D

回答

4

JavaScript不提供這種語法。

現在,您可以使用Array.includes()方法做足夠近的事情。如果在數組中找到元素,則返回true
否則,如果返回false

var userTypes = ["admin", "superUser"]; 
if (userTypes.includes(userType)){ 
    // do stuff 
} 

或通過內聯數組值:

if (["admin", "superUser"].includes(userType)){ 
    // do stuff 
} 
+0

內聯方法可能是最接近我想要的。謝謝大衛! –

+0

你非常歡迎。我想也是:) – davidxxx

2

可以使用與indexOf一個array。像

if(["superUser", "admin"].indexOf(userType) >= 0){ 
    //code goes here 
} 
0

您可以使用一個對象進行快速檢查。

if ({ admin: 1, superUser: 1 }[userType]) { 
    // do something if true 
} 
+0

爲什麼這不會拋出語法錯誤?使用'{admin:1,superUser:1} [userType]'在它自己的文件上引發一個。 ---啊。這是括號......沒關係。 – evolutionxbox