2013-07-29 69 views
0

Iam很難用JS/JQuery搜索JSON文檔。 Here is my JSON file 我的應用程序中有兩個選擇列表,一個選擇頂層數組(150,300,600,900等)之一,另一個選擇一個對象(直徑)內的值。我想顯示所有匹配。我已經嘗試了幾件事情,但我似乎選擇了適當的數組搜索 - 我只能通過數字(0,1,2等)而不是名稱(150,300等)來獲取它們。正確搜索JSON文件

這是我的當前功能:

$("#btnBeregn").click(function(){ 
      //$("#loader").fadeIn(200); 
      $("#resultsTable").html(""); 
      var currDiameter = $("#ddlDiameter option:selected").val(); 
      var currDim = $("#ddlRorklasse option:selected").val(); 

      $.getJSON("calctable.json", function(data) { 

       $.each(data, function(i, v) { 
         $.each(v, function(x,y) { 

          if(y.bolts == "32"){ 
           console.log('16 boolts'); 
          } 

         }); 
       }); 


      }); 



    }); 

回答

0

$.each迭代陣列,而不是對象,並且當JSON被解析,輸出是一個對象。

遍歷JavaScript對象的方法是:

for (var key in object) { 
    if (object.hasOwnProperty(key)) { 
    // key is the key, object[key] is the value 
    } 
} 

有關遍歷對象的詳細信息,請參閱How to Loop through plain JavaScript object with objects as members?

編輯:在你的情況下,得到符合某個屬性的特定項目,你可以做這樣的事情:

$.each(data["150"], function(i, item) { 
    if (item.diameter == "0,5/15mm") { 
     console.log(item); 
    } 
}); 

編輯#2:我擡頭$.each,它看起來我錯了。它可以用於迭代數組和對象(http://api.jquery.com/jQuery.each/)。這就是說,就你而言,鑑於數據的結構,只需要一個$.each,正如我上面所示。

+0

嗨!感謝您的回覆!那麼,我對事物的看法會發生很大的變化。儘管如此,仍然很困難,但Iam到達那裏。是否有任何簡單的解決方案,例如150個物體下直徑爲0.5/15mm的物體。我需要兩個for循環嗎?再次,非常感謝。這對我很有幫助。 –

+0

我已經編輯了我的答案,併爲這種情況提供瞭解決方案。 – BadgerPriest

+0

非常感謝!它像魅力一樣工作,現在我明白了爲什麼! –