2012-08-10 77 views
0

我想顯示的項目列表更多...如果值包含一個或陣列

項目A B項 C項 項目d

我可以告訴碼不顯示包含一個像這樣的任何項目:

exclusions = new Array("A") 
if (v.value.indexOf(exclusions) > -1) { 
} 
else { 
DO SOMETHING 
} 

我卡住是,如果我想它排除多個,像這樣:

exclusions = new Array("A", "B") 
if (v.value.indexOf(exclusions) > -1) { 
} 
else { 
DO SOMETHING 
} 

回答

2

一種方法是使用正則表達式。

var matches = "there is a boy".match(/[ab]/); 
if (matches === null) { 
    // neither a nor b was present 
} 

如果您需要建立從字符串正則表達式,你可以不喜歡它

var matches = "there is a boy".match(new RegExp("[ab]")); 

如果你有一個像['a', 'b']字符串數組,那麼你需要做的是這樣

var pattern = yourArray.join(''); 
var regex = new RexExp(pattern); 

這裏我們構造一個字符串,它是一個模式,然後基於該模式創建一個新的正則表達式。

+0

這似乎是正確的答案,但我似乎無法把它放到上下文中。 – 2012-08-10 12:33:50

+0

你是什麼意思? – hvgotcodes 2012-08-10 12:34:33

+0

要引用我的原始代碼塊,我需要var matches = v.value.match(/ [ab] /); – 2012-08-10 12:49:24

1

接聽僞 - 碼時尚:

exclusions = new Array("A", "B"); 
exclusion_found = false; 
for (int i=0; i< exclusions.length; i++) { 
    if (v.value.indexOf(exclusions[i]) > -1) { 
     exclusion_found = true; 
     break; 
    } 
} 
if (!exclusion_found) { 
    DO SOMETHING 
} 
1

下面是使用indexOf不同的方式,利用Array#every[MDN]

var val = v.value; 
if(exclusions.every(function(x) { return val.indexOf(x) === -1 })) { 
    // val does not contain any string in `exclusions` 
} 
相關問題