2016-04-22 104 views
0

我有一个循环和与JSONObj比较的问题。我的代码工作,除非该项目不存在于JSONObj中。javascript for循环和匹配字符串

我想比较2串JSONObj资源不存在给我喜欢的输入myTextarea2消息BBB不存在

我试图boolen var isNomatch = ((JSONObj[i] == res[b]))

if (isNomatch == false)我想这个问题是错误的

if((JSONObj[i] !== res[b])){

和我的for循环是奇数

HTML报头

<input type="text" id="myText" value="26B,26N,245"> 
<button onclick="myFunction()">ok</button> 
<br> 
<textarea id="myTextarea">Item</textarea > 
<br> 
<textarea id="myTextarea2"></textarea > 

的Javascript

var JSONObj = [ 
    {"nummer":"26B", "item":"26B) Sonic Screwdriver\n\n"}, 
    {"nummer":"26N", "item":"26N) Pizza\n\n"}, 
    {"nummer":"245", "item":"245) I need Coffe\n\n"} 

] 

    function myFunction(){ 
     var str = document.getElementById("myText").value; 
     var res = str.split(","); 

     for(var b = 0; b < res.length; b++) { 

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

       //Here is the problem 
       if((JSONObj[i] !== res[b])){ 
       var str2 = res[i]; 
       var text2 = [text2,str2].join(""); 
     document.getElementById("myTextarea2").value =text2; 
      } 

      //this one's OK 
      if (JSONObj[i].nummer === res[b]){ 

       var str1 = JSONObj[i].item; 
       var text1 = [text1,str1].join(""); 
     document.getElementById("myTextarea").value =text1; 
     document.getElementById("myTextarea").cols = "100"; 
     document.getElementById("myTextarea").rows = "20"; 
     } 
     } 
    } 
    } 

回答

0

正如你已经注意到这里有一个问题

部分
//Here is the problem 
     if((JSONObj[i] !== res[b])){ 
     var str2 = res[i]; 
     var text2 = [text2,str2].join(""); 

     } 

您试图比较对象是否不等于字符串这将始终是true

语法更改为

if(JSONObj[i].nummer !== res[b]){ 

我看到你的代码中的另一个问题。这部分

//this one's OK 
      if (JSONObj[i].nummer === res[b]){ 

       var str1 = JSONObj[i].item; 
       var text1 = [text1,str1].join(""); 
      } 

在for循环之外,您如何访问索引值i。既然你是在说它的工作,那么你在这里发布的代码不是你真正拥有的或者你的代码根本无法工作。

+0

我使用netBeans没有错误。 jsfiddle.net不工作,jsbin超出了text1和text1的范围。奇怪的作品 – Wilk