2015-06-20 84 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