检查一个数组中的每个项是否与另一个数组匹配

Check each item of one array for matches in another array

本文关键字:数组 是否 另一个 一个 检查      更新时间:2023-09-26

我目前正在尝试编写一个文字游戏程序,玩家将找到的单词输入到文本框中,然后点击提交。点击submit后,该单词被存储在一个数组中,我可以在Javascript中使用它,并且文本框被清除,以便他们可以输入另一个单词。我想我最终可以弄清楚这些部分(我是HTML和JavaScript的新手),但我不知道下一步该怎么做。我需要对照一组经过验证的单词来检查玩家发现的每个单词。我在这里找到了一些代码,可以搜索单个单词是否与数组中的任何字符串匹配,但我该如何编写一个代码,根据字典/已验证的数组检查玩家找到的所有单词?

您可以迭代用户数组中的每个元素,并使用IndexOf查看它是否存在于已验证的数组中。如果找不到IndexOf,它将返回-1。

for (var i = 0; i < userArray.length ; i++) 
    if(verifiedWordArray.indexOf(userArray[i]) == -1)
        return false;     
return true;

如果你必须匹配特定的位置,假设它们的长度相同,这就可以了。

for (var i = 0; i < userArray.length ; i++) 
    if(userArray[i] != verifiedWordArray[i])
        return false;     
return true;

伪代码:

ans = true // assume the user is right
for (each of the words in user input array){
    if(current word is not in the predefined array){ // use .indexOf()
        ans = false
        break; //stop loop
    }
}

一旦完成该循环,ans将根据用户的输入为真或假。

如果在客户端执行此操作,则可以将单词的字典存储在一个数组中,例如array= ["one","two", "three","word"],然后使用此array.indexOf('word') > -1 检查用户的单词word是否与您的字典匹配

function getIntersect(arr1, arr2) {
    var r = [], o = {}, l = arr2.length, i, v;
    for (i = 0; i < l; i++) {
        o[arr2[i]] = true;
    }
    l = arr1.length;
    for (i = 0; i < l; i++) {
        v = arr1[i];
        if (v in o) {
            r.push(v);
        }
    }
    return r;
}

发件人:http://www.falsepositives.com/index.php/2009/12/01/javascript-function-to-get-the-intersect-of-2-arrays/