【问题标题】:Searching JSON file properly正确搜索 JSON 文件
【发布时间】:2013-07-29 10:24:37
【问题描述】:

我很难使用 JS/JQuery 搜索 JSON 文档。 Here is my JSON file 我的应用程序中有两个选择列表,一个选择顶级数组之一(150、300、600、900 等),另一个选择其中一个对象(直径)内的 a 值。我想显示所有匹配项。我已经尝试了几件事,但我似乎可以选择要搜索的正确数组 - 我只能通过数字(0、1、2 等)而不是名称(150、300 等)来获取它们。

这是我目前的功能:

 $("#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');
                            }

                        });
                });


            });



    });

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    $.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,5 / 15mm 的 150 物体下的物体。我需要两个 for 循环吗?再次,非常感谢。这对我帮助很大。
    • 非常感谢!它就像一个魅力,现在我明白为什么了!
    猜你喜欢
    • 2021-03-10
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2015-11-04
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多