优化JavaScript indexOf语句

时间:2011-12-08 01:23:05

标签: javascript

我正在用JavaScript编写一个简单的搜索算法。

var title = "The Greatest Movie Ever Made is here!";
var search1 = "the greATEST movie";
var search2 = "here IS made"
var search3 = "ever movie greatest the"

使用 indexOf()仅返回search1 false,但search2,3也为true。我如何编写一个简单的搜索算法来识别单词可能不正确或聚集在一起的实例?

1 个答案:

答案 0 :(得分:4)

这是一个函数,可以告诉您搜索字符串中的所有单词是否存在于目标中而不考虑大小写或单词边界。

function findMatch(data, target) {
    var words = data.toUpperCase().split(/\s/);
    if (words.length === 0) {return(false);}
    var uTarget = target.toUpperCase().replace(/\s/, "");
    var matchCnt = 0;
    for (var i = 0; i < words.length; i++) {
        if (uTarget.indexOf(words[i]) != -1) {
            ++matchCnt;
        }
    }
    return(matchCnt === words.length);
}

此算法不强制字边界,因此如果目标包含“和”或“答案”,则搜索“an”将匹配。执行单词边界将需要更多的代码来理解有效的单词边界是什么。