Как получить массив из вложенного массива или вложенного объекта в Json, используя Jquery - PullRequest
0 голосов
/ 25 марта 2019

Я получаю результат в формате 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",

IУ меня есть выборка диагноза, осмотра и т. д. Предположим, я выбрал осмотр, после чего должен быть извлечен объект осмотра и добавлены все заголовок и 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>

1 Ответ

0 голосов
/ 25 марта 2019

Использование 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
         });
       }
 });
...