【问题标题】:How to grep a array from nested array or nested object in Json using Jquery如何使用 Jquery 从 Json 中的嵌套数组或嵌套对象中 grep 数组
【发布时间】:2026-01-22 08:20:21
【问题描述】:

我得到 JSON 格式的结果,其中对象可以在对象或数组中。单击函数时,获取值并找到该值的对象并附加值

var result={  
"diagnosis":{  
  "Diagnosis":{  
     "head":"Diagnosis",
     "head_id":"18",
     "param":{  
        "10436":"Abortion",
        "10452":"Abscess",
     }
  },
  "ADR-ART":{  
     "head":"ADR-ART",
     "head_id":"19",
     "param":{  
        "120":"A K I",
        "66":"Abdominal Pain

     }
  },
  "ADR-Rx":{  
     "head":"ADR-Rx",
     "head_id":"20",
     "param":{  
        "66":"Abdominal Pain",
        "67":"Alopecia",
        "34":"Anaemia",
        "53":"Anorexia",
     }
  },

 },
 "examination":{  
  "General":{  
     "head":"General",
     "head_id":"8",
     "param":{
        "33":"Anemia",
        "27":"Apthous Ulcers",
        "35":"Ascitis",
     }
  },
  "Skin":{  
     "head":"Skin",
     "head_id":"9",
     "param":{  
        "14":"Alopecia \/ Hair Loss",
        "20":"Angular Cheilitis",
     }
  },
  "Oral":{  
     "head":"Oral",
     "head_id":"10",

我有一个诊断、检查等的选择下拉菜单。假设我选择了检查,那么应该提取检查对象,并附加其所有的 head 和 head_id。这是我尝试过的:

function change_category(objEleme){
var tab_value = $('#head_section_'+objEleme).val(); // value from 1st dropdown list eg : examination
$.each(result.tab_value, function(idx, data){
    console.log(data.head + ' ' + data.head_id);
});return false;

预期输出:

   <option value="8">General</option>
   <option value="9">Skin</option>
   <option value="10">Oral</option>

【问题讨论】:

  • 使用括号符号result[tab_value]
  • 感谢 Satpal 这工作。还有一个问题...如何访问 General 的参数数据(在功能上单击我获取 head 和 head id)并将其输出以供选择下拉列表?
  • 我找到了第二个问题的答案。我在变量 head 中获得了选定的选项文本,然后执行了以下操作: $.each(result[tab_value][head]['param'], function(idx,data){ //do something });

标签: jquery json object multidimensional-array


【解决方案1】:

使用result[tab_value] 对于仅用于“常规”的参数,您必须简单地使用嵌套循环

$.each(result[tab_value], function(idx, data){
    console.log(data.head + ' ' + data.head_id);
    if(data.head == "General")
      { $.each(data.param, function(param_idx, param_data)  
         {
             // do something
         });
       }
 });

【讨论】: