如果value包含一个或多个数组

时间:2012-08-10 11:42:15

标签: javascript

我正在尝试显示项目列表...

项目A. 项目B. 项目C. 项目D

我可以告诉代码不显示任何包含A的项目,如下所示:

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
}

3 个答案:

答案 0 :(得分: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);

这里我们构造一个模式的字符串,然后根据该模式创建一个新的正则表达式。

答案 1 :(得分: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
}

答案 2 :(得分:1)

以下是使用indexOf的另一种方式var val = v.value; if(exclusions.every(function(x) { return val.indexOf(x) === -1 })) { // val does not contain any string in `exclusions` }

{{1}}