如果值包含数组中的一个或多个

If value contains one or more from array

本文关键字:一个 包含 数组 如果      更新时间:2023-09-26

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

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

一种方法是使用正则表达式。

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

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

以伪代码方式回答:

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
}

这是使用 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`
}