2017-01-17 21 views
1

我试图将输入的文本与来自预定义数组的单词列表进行匹配。但是,它不会返回任何内容,即使console.log也不会返回任何内容。我无法弄清楚为什么out循环没有启动。任何帮助将不胜感激。我的嵌套循环无法正常工作

var actions = ["north", "south", "east", "west", "up", "down", "get", "take", "pick up", "use", "drop", "open", "close"]; 
 
var inputTextBox = document.getElementById("inputTextBox"); 
 

 
inputTextBox.addEventListener("keypress", function(event) { 
 
    var stringArray = []; 
 
    var x = event.which || event.keyCode; 
 
    var inString = inputTextBox.value.toLowerCase(); 
 

 
    if (x === 13) { 
 
     stringArray = inString.split(" "); 
 
     console.log("stringArray is --- " + stringArray + " --- length is " + stringArray.length); 
 
     for (var i = 0; i < stringArray; i++) { 
 
      console.log("outer loop is " + stringArray[i]); 
 
      for (var j = 0; j < actions.length; j++) { 
 
       if (stringArray[i] === actions[j]) { 
 
        console.log(stringArray[i]); 
 
       } 
 
      } 
 
     } 
 
    } 
 
}
<input id="inputTextBox" type="text" maxlength="200" placeholder="words here" autofocus></input>

回答

3

你忘了使用length属性,因为stringArray是一个数组,你必须重复它,使用它的length

for (var i = 0; i < stringArray.length; i++) { 
................................^^^^ 

“不过,它不返回任何东西,连的console.log不 什么回报。”

要查看所做的更改,您必须按enter

var x = event.which || event.keyCode; 

event.which属性指示被按下并13enter命令键的特定键或按钮。

var actions = ["north", "south", "east", "west", "up", "down", "get", "take", "pick up", "use", "drop", "open", "close"]; 
 
var inputTextBox = document.getElementById("inputTextBox"); 
 

 
inputTextBox.addEventListener("keypress", function(event) { 
 
\t var stringArray = []; 
 
\t var x = event.which || event.keyCode; 
 
\t var inString = inputTextBox.value.toLowerCase(); 
 
\t 
 

 
\t if (x === 13) { 
 
\t stringArray = inString.split(" "); 
 
\t console.log("stringArray is --- " + stringArray + " --- length is " + stringArray.length); 
 
\t \t for (var i = 0; i < stringArray.length; i++) { 
 
\t \t \t console.log("outer loop is " + stringArray[i]); 
 
\t \t \t for (var j = 0; j < actions.length; j++) { 
 
\t \t \t \t if (stringArray[i] === actions[j]) { 
 
\t \t \t \t \t console.log(stringArray[i]); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 

 
});
<input id="inputTextBox" type="text" maxlength="200" placeholder="words here" autofocus></input>

1

在你的第一个for循环,而不是我<字符串数组 试试这个我< stringArray.length

for (var i = 0; i < stringArray.length; i++) { 
     console.log("outer loop is " + stringArray[i]); 
     for (var j = 0; j < actions.length; j++) { 
      if (stringArray[i] === actions[j]) { 
       console.log(stringArray[i]); 
      } 
     } 
    }