0

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

项目 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
}
4

3 回答 3

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);

在这里,我们构造一个作为模式的字符串,然后基于该模式创建一个新的正则表达式。

于 2012-08-10T11:44:22.890 回答
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
}
于 2012-08-10T11:47:46.963 回答
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`
}
于 2012-08-10T11:56:07.997 回答