簡體   English   中英

如何在沒有特定鍵的情況下從JSON對象獲取值

[英]How to I fetch values from JSON object without specific key

我有下面的JSON對象,我想使用javascript從其僅獲取開發控制台日志上的某些值。 我試過但下面的代碼,但我不知道如何遍歷數組數組。 任何人都可以建議我如何實現這一目標。

var infoJSON;
for(key in myClass) {
  infoJSON = myClass[key];
  console.log(infoJSON);
}




var myClass= {
   "Subjects":"3",
   "Subject":{
      "maths":{
         "subject_id":"1",
         "subject_level":"easy",
         "marks":"90"
      },
      "english":{
         "subject_id":"2",
         "subject_level":"medium",
         "marks":"80"
      },
      "physics":{
         "subject_id":"3",
         "subject_level":"tough",
         "marks":"70"
      }
   },
   "Average": "80"
};

我正在嘗試編寫JavaScript函數,以在瀏覽器開發工具控制台中以以下給定的格式輸出主題的總數,每個主題的分數和平均分數。

Subjects: 3
- maths (90)
- english (80)
- physics (70)
Average: 80

該代碼應可用於具有相同結構的任何JSON對象,因此不想使用硬編碼鍵(例如,數學,物理學)

這可以通過Object.keys()簡單for in來完成。

請嘗試以下操作:

 var myClass= {"Subjects":"3","Subject":{"maths":{"subject_id":"1","subject_level":"easy","marks":"90"},"english":{"subject_id":"2","subject_level":"medium","marks":"80"},"physics":{"subject_id":"3","subject_level":"tough","marks":"70"}},"Average":"80"}; for(key in myClass){ if(myClass[key].constructor.toString().indexOf("Object") > 0){ Object.keys(myClass[key]).forEach((k)=>{ console.log(k +" - "+ myClass[key][k].marks); }); } else{ console.log(key +" - " +myClass[key]); } } 

這只是檢查您在課堂上要進行迭代的問題。 如果鍵是字符串,則可以簡單地打印它;如果不是,則可以迭代它的鍵,然后打印該鍵

 var myClass= {"Subjects":"3","Subject":{"maths":{"subject_id":"1","subject_level":"easy","marks":"90"},"english":{"subject_id":"2","subject_level":"medium","marks":"80"},"physics":{"subject_id":"3","subject_level":"tough","marks":"70"}},"Average":"80"}; for (let key in myClass) { let value = myClass[key]; if (typeof value === 'string') { console.log( `${key}: ${value}` ); continue; } console.log( Object.keys( value ).map( k => `- ${k} (${value[k].marks})` ).join('\\n') ); } // if you want it in one log output console.log( Object.keys( myClass ).reduce( (result, key) => { if (typeof myClass[key] === 'object') { let value = myClass[key]; return result.concat( Object.keys( value ).map( k => `- ${k} (${value[k].marks})` ) ); } result.push( `${key}: ${myClass[key]}` ); return result; }, [] ).join('\\n') ); 

主題和平均數始終位於同一位置,因此您需要對其進行硬編碼。 然后,您必須繼續執行數組以確定其他字段:

var myClass= {
   "Subjects":"3",
   "Subject":{
      "maths":{
         "subject_id":"1",
         "subject_level":"easy",
         "marks":"90"
      },
      "english":{
         "subject_id":"2",
         "subject_level":"medium",
         "marks":"80"
      },
      "physics":{
         "subject_id":"3",
         "subject_level":"tough",
         "marks":"70"
      }
   },
   "Average": "80"
};
var infoJSON;
console.log('Subjects: ' + myClass['Subjects']);
for(key in myClass['Subject']) {
  console.log('- ' + key + ' (' + myClass['Subject'][key]['marks'] + ')');
}
console.log('Average: ' + myClass['Average']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM