如何检查我的输入是否在数组中

时间:2017-09-19 15:10:55

标签: javascript html arrays

我正在用Html / Javscript编写一个文字游戏。 你需要猜出这个词。当一个字母是正确的,那么这封信将得到一个绿色背景(这是有效的)。 但是现在我想要的是,如果字母在单词中,但不在正确的位置,则背景将为黄色(这是问题)

git c "my commit message"

rand是我的数组的随机值(包含所有单词)。

代码需要为每个不在正确位置的字母提供黄色背景。

2 个答案:

答案 0 :(得分:1)

代码的替代方案:

var rand = ["A", "B", "C", "D"];
var input = "BEND";

for (var index = 0; index < input.length; index++) {

    var colorCode = getColorCodeForInputLetter(index, input[index]);
    console.log(input[index], "=>", colorCode);

}

function getColorCodeForInputLetter(index, letter) {

    // Check if the letter is in the rand Array
    if (rand.indexOf(letter) !== -1) {

        // Check if the index of the letter is equals to the index of the letter in the array
        if (rand.indexOf(letter) === index) {
            console.log(letter, "correct");
            return "green";
        } else {
            console.log(letter, "in rand");
            return "yellow";
        }

    } else {
        console.log(letter, "not in rand");
        return "red";
    }

}

我在节点中输入了这个,输出是:

B in rand
E not in rand
N not in rand
D correct

答案 1 :(得分:0)

您的代码似乎很好,问题是您正在进行的测试是错误的。 indexOf返回在数组中找到它的索引,或-1。由于索引从0开始,并且您正在测试truthy值,除非在数组的第一个索引中找到该字母,否则这将始终是正确的...使用此更正if:

if(rand.indexOf(invoer[i].value.toUpperCase())>-1)

另外,就像你在上面的IF语句中所做的那样,如果情况无关紧要,也可以使用.toUpperCase()。你的代码没有显示它,但我认为rand已经填充了大写......