【问题标题】:How can I loop through a JSON array based on a variable?如何基于变量循环遍历 JSON 数组?
【发布时间】:2015-11-11 15:32:40
【问题描述】:

我已经遍历了我的第一个 JSON 字符串,它给了我一个显示在 div 中的变量值(“lstr”)。基于这第一个值,我想循环通过我的第二个 JSON 字符串来填充下拉框。变量值“lstr”匹配jsonString2中的“name”对象:

//resultItems.push("After");
         var lstr = "";

         for (var j = 2; j < resultItems.length; j++) {
             lstr = lstr + resultItems[j] + "";

         }
         dom.byId("info").innerHTML = lstr;

     });

jsonString2:

var jsonString2 = 

{
    "Toplevel": {
        "name": "Blue",
        "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",
        },
        "name": "Green",
        "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",

        },
        "name": "Yellow",
        "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",

        }
    }
}

根据“lstr”值是蓝色、绿色或黄色,然后它将填充一个下拉框,其中包含 1、2、3 个对象及其相关的 url 值。我希望这是有道理的?任何帮助都会很好?!

【问题讨论】:

  • 您在此变量中使用postget 来填充下拉列表?
  • 您的 JSON2 对象使这几乎不可能。由于对象在 JS 中未排序 - 无法查看与每个名称相关的“服务”属性......这应该是一个数组吗?
  • 你的jsonString2 坏了。 nameservice 键出现了 3 次,因此 BlueGreen 永远不会存在,因为它们被 Yellow 覆盖。

标签: javascript json


【解决方案1】:

正如 cmets 所说,您需要将第二个 JSON 对象 (jsonString2) 重构为如下所示:

    var jsonString2 = 

{
    "Toplevel": {
      "Blue": {
         "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",
          }
        },
        "Green" : {
           "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",
           }
         },
        "Yellow" : {
          "service": {
            "1": "a url",
            "2": "a url",
            "3": "a url",
          }
        }
    }
}

然后就可以使用了

for (var key in jsonStrng2[lstr].service){
 //add code to update dropdown here for each service
}

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2023-03-07
    • 2015-07-22
    相关资源
    最近更新 更多