我正在用Html / Javscript编写一个文字游戏。 你需要猜出这个词。当一个字母是正确的,那么这封信将得到一个绿色背景(这是有效的)。 但是现在我想要的是,如果字母在单词中,但不在正确的位置,则背景将为黄色(这是问题)
git c "my commit message"
rand是我的数组的随机值(包含所有单词)。
代码需要为每个不在正确位置的字母提供黄色背景。
答案 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已经填充了大写......