Javascript:搜索字符串时数组中有多个表达式

时间:2014-12-27 13:39:54

标签: javascript arrays string

我目前正在使用Javascript,现在我正在寻找一种检查变量是否包含至少一个字符串的方法。我看过以前的问题,但是,都没有包含我正在寻找的东西。我在这里有一个功能:

function findCertainWords() 
{
    var t = {Some text value};
    if (t in {'one':'', 'two':''}) 
       return alert("At least one string is found. Change them."), 0;
    return 1
}

变量a是用户的书面文字(例如,评论或帖子)。

我想检查用户是否在其中写了某个单词并返回警告消息以删除/编辑该单词。虽然我的书面函数有效,但只有当用户在我的变量("Three" != "three")中写入时,才能正确写入该函数。我想改进我的功能,所以它也会发现不区分大小写("Three" == "three")和部分单词(比如" thr"来自" three")。我尝试使用*这样的表达式,但它没有用。

如果每个表达式都可以写在一个函数中,那将是最好的。否则,我可能需要帮助组合两个函数。

2 个答案:

答案 0 :(得分:1)

使用indexOf测试字符串是否包含其他字符串。在比较之前,使用.toLowerCase将其转换为一个案例。

function findCertainWords(t) {
    var words = ['one', 'two'];
    for (var i = 0; i < words.length; i++) {
        if (t.toLowerCase().indexOf(words[i]) != -1) {
            alert("At least one string was found. Change them.");
            return false;
        }
    }
    return true;
}

另一种方法是将数组转换为正则表达式:

    var regexp = new RegExp(words.join('|'));
    if (regexp.test(t)) {
        alert("At least one string was found. Change them.");
        return false;
    } else {
        return true;
    }

答案 1 :(得分:0)

您可以将Array.someObject.keys

一起使用
if(Object.keys(obj).some(function(k){
   return ~a.indexOf(obj[k]);
})){
  // do something
}