2015-06-20 82 views
0

我正在嘗試檢查字符串提交的字符串。如果word_string = "GAR",則應該返回"GAR",因爲這些字母出現在信箋中。嵌套for循環的奇怪結果javascript

由於某些原因,有些詞顯示正確,有些詞以缺少字母出現。例如,使用word_string = "RAG",這將返回"R""FIG"返回"FG"

letterset = {0: "R", 1: "A", 2: "G", 3: "A", 4: "O", 5: "E", 6: "F", 7: "I"} 


    var ls = []; 
    for (prop in letterset) { 
     ls.push(letterset[prop]); 

    }; 
    console.log(ls) 
    var word_string = ''; 
    var word = document 
       .getElementById('word_container') 
       .childNodes; 
    for (var i in word) { 
     var w = word[i].innerHTML; 

     for (var prop=0; prop<ls.length; prop++) { 
      if (ls[prop] == w) { 
       console.log(w); 
       word_string += w; 
       ls.splice(prop); 

      } 
     } 

} 
+2

爲什麼不'letterset'數組?你爲什麼只用一個參數調用'.splice()',並且你是否想過在迭代同一個數組的同時從數組中移除元素會發生什麼?你認爲這對你的循環索引有什麼影響? – nnnnnn

+0

你可以發佈一個正在使用當前示例的jsfiddle嗎? – Quantico

+0

因爲它來自python後端作爲json對象 –

回答

2

我認爲你正在使用拼接錯誤,不管這是一個有點過於複雜的嘗試:

for (var i in word) { 
    var w = word[i].innerHTML; 
    if (ls.indexOf(w)> -1) { 
      word_string += w; 
     } 
    } 
+1

僅供參考這個ls.indexOf(w)> -1有點像python中的列表中的x。 – Quantico