2011-04-08 65 views
2

有沒有更好的方法來處理檢查多個值。當我有超過3個選擇時,它開始變得非常忙碌。有條件,如果對於很多值,更好的方法

if (myval=='something' || myval=='other' || myval=='third') { 

} 

PHP有一個叫做in_array()函數的二手這樣的:

in_array($myval, array('something', 'other', 'third')) 

是否有類似的東西在JS或jQuery的?

回答

2

您可以通過使用某種哈希映射避免陣列上迭代:

var values = { 
    'something': true, 
    'other': true, 
    'third': true 
}; 

if(values[myVal]) { 

} 

確實還沒有jQuery的工作;)

+0

if(values.hasOwnProperty(myval))將防止在原型鏈上找到屬性。 – JaredMcAteer 2011-04-08 19:42:06

+0

雖然這是一個很好的建議OP的特殊情況,它可能會指出,它只適用於查找字符串值。 – Phrogz 2011-04-08 20:22:12

3

此外$.inArray,你可以使用對象符號:

if (myval in {'something':1, 'other':1, 'third':1}) { 
    ... 

if (({'something':1, 'other':1, 'third':1}).hasOwnProperty(myval)) { 
    .... 

(請注意,如果客戶端已修改Object.prototype的第一代碼將不工作。)

+0

好吧,它會工作,它可能會給你一個誤報。還要注意,引號是多餘的。最後要注意的是,雖然這對於OP的特定情況非常適用,但它只在比較字符串值時才起作用。 – Phrogz 2011-04-08 20:20:28

0

從截取的清潔溶液中的10+ JAVASCRIPT SHORTHAND CODING TECHNIQUES

普通寫法

if (myval === 'something' || myval === 'other' || myval === 'third') { 
    alert('hey-O'); 
} 

速記

if(['something', 'other', 'third'].indexOf(myvar) !== -1) alert('hey-O'); 
相關問題