我正在尝试将键码与 sent1Array 匹配。如何让 forEach 转到数组中的下一个数字?

I am trying to match keycodes to the sent1Array. How do I make the forEach go to the next number in my array?

如果我输入第一个字母 ("T"),我会得到 "Congrats"。如果我键入下一个字母 ("h"),我会得到 "Nope",因为它还没有移动到我数组中的下一个键码。我需要移动到数组中的下一个字母并将其与下一个键码匹配。

var sent1Array = [84, 72, 69, 32, 81, 85, 73];
input1.addEventListener("keydown", function(event) {
 sent1Array.forEach(function() {
        for (var i = 0; i < 1; i++) {
            if (sent1Array[i] === event.keyCode) {
                console.log("Congrats");
            } else {
                console.log("Nope");
            }
        }
    })
    });

每次最终用户输入正确的密钥时,您都需要增加当前数组索引。因此,这里不需要 for.forEach 循环。相反,您可以在 keydown 事件侦听器回调之外定义当前键的索引,并在有人输入正确的键时手动增加索引,如下所示:

var sent1Array = [84, 72, 69, 32, 81, 85, 73];  
var current_key = 0; // index of current key to enter
document.getElementById("input1").addEventListener("keydown", function(ev) {
  if (sent1Array[current_key] === event.keyCode) { // use current_key as an index for the array
    console.log("Congrats");
    current_key++; // increment the current_key index by one
  } else {
    console.log("Nope");
  }
});
<input type="text" id="input1"/>

第一步是为什么当 i < 1 时 for 循环结束?不应该是 i <= sent1Array.length?

你的循环只运行宁一次它应该运行 sent1Array.length。你也可以像这样减少循环。

var sent1Array = [84, 72, 69, 32, 81, 85, 73];
        input1.addEventListener("keydown", function(event) {
        if(sent1Array.indexOf( event.keyCode ) != -1){
           console.log("Congrats");
        }else{
           console.log("Nope");
        }
            
       });
<input type="text" id="input1"/>

你应该维护一个索引,它会随着你的按键而增加。只要键匹配就增加索引,并在用户开始出错时重置索引(和输入字段)

input1 = document.getElementById("input1");

var sent1Array = [84, 72, 69, 32, 81, 85, 73];
var currentIndex = 0;

input1.addEventListener("keydown", function(event) {

   if (sent1Array[currentIndex] === (event.keyCode)){
      currentIndex++;
      console.log('Congratz')
   }
   else {
      //Maybe you should delete the last letter or the whole string from the input here.
      currentIndex = 0
      console.log('nope');
    
   }
});
<input type="text" id="input1">