javascript - jquery是什麼 - jquery selector



簡明的方法來比較多個值 (6)

你可以把選項放在數組中並使用jQuery $.inArray()或javascrpt indexOf()來搜索數組

純粹的javascript

現場演示

var a = 'anything';
arr = ['something', 'nothing', 'anything', 'everything'];
if(arr.indexOf(a) != -1)
    alert("condition met");    
else
    alert("condition not met");    

用jQuery

現場演示

var a = 'jesus';
arr = ['something', 'nothing', 'anything', 'everything'];

if($.inArray(a, arr) != -1) // With jQuery
    alert("condition met");    
else
    alert("condition not met");    

這個問題在這裡已有答案:

考慮以下:

var a = 'jesus';

if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
   alert('Who cares?');
}

有沒有辦法縮短它?

Javascript中有沒有if (a=='bbb'||'ccc')

另外,jQuery可以幫忙嗎?


Answer #1

你可以用這個......

if (["something", "nothing", "anything", "everything"].indexOf(a) > -1) {
   alert('Who cares?');
}

你還標記了jQuery,所以如果你需要支持沒有Array.prototype.indexOf()舊瀏覽器,你可以使用$.inArray()


Answer #2

使用對象文字:

var all={something:1,nothing:1,anything:1,everything:1};
if (all.hasOwnProperty('jesus')) alert('Who cares?');​

我會說這是一般用途的最簡潔的跨瀏覽器表達式(好吧,只要目標是比較字符串)。 它也非常靈活,因為您可以輕鬆添加或刪除屬性:

all.mything=1;
delete all.nothing;

Answer #3

可能是使用開關而不是if:

var a = 'jesus';
switch (a){
    case 'something':
    case 'nothing' :
    case 'anything':
    case 'everything':
   alert('Who cares?');
   break;
}

Answer #4

我認為沒有簡單的方法可以做到這一點。 但是你可以編寫一個函數in_array ,你可以在任何你需要的地方使用它

Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}

var v_array = [ 'something','nothing', 'anything', 'everything'];

var a = "jesus";

if(v_array.in_array(a)){
    alert('Who cares?');
}

Answer #5

正則表達式:

if (/^(something|nothing|anything|everything)$/.exec('jesus')) alert('Who cares?');​

或者相反:

/^(something|nothing|anything|everything)$/.exec('jesus')||alert('Who cares?');​

[更新]更短;-)

if (/^(some|no|any|every)thing$/.exec('jesus')) alert('Who cares?');​




jquery