检查数组匹配项的字符串并继续检查

时间:2014-10-31 17:36:00

标签: javascript

我想存储一些字符串并检查,如果textarea中的字符串等于存储的字符串。

我决定从数组开始。

var string = "something like this happens everyday in my life";

var array1 = [
    "thing",
    "something"
];

var array2 = [
    "happens",
    "life"
];

我知道如何使用一个单词字符串:

if(string.search(array1) != -1) {
    console.log("array1");
} 

if(!!~jQuery.inArray(string.search, array1)) {
    console.log("array1");
} 

但我需要的是将这句话的每个项目与我的数组进行比较并获得每场比赛。即使一个数组中有多个匹配项。 请帮忙。

2 个答案:

答案 0 :(得分:1)

检查字符串是否包含给定子字符串的最简单方法是使用.indexOf

var s = "Hello, how are you today? Is everything alright?"
// if you want the search to be case insensitive:
// s = s.toLowerCase();
var myWords = ["how", "everything"];
for (var i = 0; i < myWords.length; i++) {
    var pos = s.indexOf(myWords[i]);
    if (pos == -1) {
        console.log("word", myWords[i], "not found.");
    } else {
        console.log("word", myWords[i], "found at position", i);
    }
}

如果你想存储所有的比赛,你可以有一个

var matches = [];

并且在else块下,有matches.push(myWords[i]);

如果您需要支持≤IE8,那么您可以使用以下函数在字符串中搜索子字符串:

var getPosition = function (s, word) {
    var len = s.length,
        wlen = word.length;
    for (var i = 0; i < len - wlen + 1; i++) {
        if (s[i] == word[0] && s.slice(i, i + wlen) == word)
            return i;
    }
    return -1;
}

如果您不想为indexOf加载外部库(即jQuery或Polyfill),这可能很有用。

答案 1 :(得分:0)

现在我最终使用了我拥有的每个阵列。我按Ctrl / C这10次,每次 for(var i = 0; i&lt; array .length; i ++){

for (var i = 0; i < states.length; i++) { var pos = text.indexOf(states[i]); if (pos == -1) { console.log("word", states[i], "not found."); } else { $( '#log').append( "~STATE~" + "<br>"); } }