2012-08-27 31 views
0

任何關於檢查變量的值是否可以是多個值中的一個值的最有效方法的建議,而不是嘗試使用long if條件與一串||連接。 (ORS)?消除JavaScript中的多個OR條件

我看到類似if (value in {'thing1':1, 'thing2':1, 'thing3':1})的東西,但我不完全確定它是如何工作的。

什麼是in視爲?運營商?

+4

關於[** in operator **]的MDN文檔(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in)有很多示例。 –

+2

這與jQuery無關。 –

+0

http://interglacial.com/javascript_spec/a-11.html#a-11.8.7 – TheHe

回答

0

如果你的價值觀是不是字符串,使用inCombining multiple conditions into one in Javascript所示的indexOf方法會大大效率較低的鏈狀或測試,這兩個要求,你的價值轉換爲字符串,並做一個字符串比較。比較變量與其原生值幾乎總是更有效率。

假設您正在尋找與模式不匹配的值(例如查明您的測試編號是奇數還是2的冪次),那麼您可以通過幾件事來改進鏈式OR測試速度。例如,首先測試最可能的值會提高整體性能;例如,如果X是更經常5大於7,則:因爲條件測試時,表達式爲真終止

if (X == 7 || X == 5) 

if (X == 5 || X == 7) 

將在比長運行更有效。

假設你的價值字符串,則inindexOf方法不會變得比類似結構的鏈接或和,給瀏覽器變幻莫測更有效,可能會加重病情。除非您可以確定要測試的值中的模式,否則在找到匹配項之前不會檢查每個值。