2017-05-25 62 views
-1

我有三個JSON語句,我已經變成了一個JavaScript對象。我想爲這些陳述中的每一個打印出演員,動詞​​和賓語。我在使用object.definition.name時遇到了問題,因爲它有時會以其他語言顯示。正因爲如此,我現在編碼的方式,它給了我第二個陳述「未定義」,因爲第二個陳述是fr-FR而不是en-US。我怎樣才能修改我的循環的對象部分,所以它給了我一個對象,不管它是什麼語言?通過一個對象循環不會給我其他語言

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Get Statements 1 demo</title> 
     <script src="xapiwrapper.min.js"></script> 
    </head> 
    <body> 
     <p id='demo'></p> 
     <script> 

      var obj1 = 
      { 
    "statements": [{ 
      "verb": { 
       "id": "http://adlnet.gov/expapi/verbs/initialized", 
       "display": { 
        "en-US": "initialized" 
       } 
      }, 
      "version": "1.0.0", 
      "timestamp": "2017-05-25T13:01:49.439248+00:00", 
      "object": { 
       "definition": { 
        "extensions": { 
         "http://example.com": 12 
        }, 
        "name": { 
         "en-US": "Change management app" 
        } 
       }, 
       "id": "https://www.avimegiddo.com/wp-admin/admin-ajax.php?action=h5p_embed&id=12", 
       "objectType": "Activity" 
      }, 
      "actor": { 
       "mbox": "mailto:[email protected]", 
       "name": "John Doe", 
       "objectType": "Agent" 
      }, 
      "stored": "2017-05-25T13:01:49.439248+00:00", 
      "authority": { 
       "mbox": "mailto:[email protected]", 
       "name": "tom", 
       "objectType": "Agent" 
      }, 
      "id": "2b03bcd0-11bd-4b43-a256-7e7c8cb259fc" 
     }, 

     { 
      "verb": { 
       "id": "http://adlnet.gov/expapi/verbs/attempted", 
       "display": { 
        "en-US": "attempted" 
       } 
      }, 
      "version": "1.0.0", 
      "timestamp": "2017-05-25T12:54:52.184309+00:00", 
      "object": { 
       "definition": { 
        "extensions": { 
         "http://h5p.org/x-api/h5p-local-content-id": 12 
        }, 
        "name": { 
         "fr-FR": "le livre" 
        } 
       }, 
       "id": "https://www.avimegiddo.com/wp-admin/admin-ajax.php?action=h5p_embed&id=12", 
       "objectType": "Activity" 
      }, 
      "actor": { 
       "mbox": "mailto:[email protected]", 
       "name": "Sally Smith", 
       "objectType": "Agent" 
      }, 
      "stored": "2017-05-25T12:54:52.184309+00:00", 
      "authority": { 
       "mbox": "mailto:[email protected]", 
       "name": "avimegiddo", 
       "objectType": "Agent" 
      }, 
      "context": { 
       "contextActivities": { 
        "category": [{ 
         "id": "http://h5p.org/libraries/H5P.DragText-1.5", 
         "objectType": "Activity" 
        }], 
        "grouping": [{ 
         "definition": { 
          "moreInfo": "https://www.avimegiddo.com/business-emails/", 
          "type": "http://activitystrea.ms/schema/1.0/page", 
          "name": { 
           "en": "How to write business emails: be formal and polite. ESL/EFL Practice Quizzes." 
          } 
         }, 
         "id": "https://www.avimegiddo.com/business-emails/" 
        }] 
       } 
      }, 
      "id": "83105145-a27c-4bec-bbb0-c1c9f9775930" 
     }, 

     { 
      "verb": { 
       "id": "http://adlnet.gov/expapi/verbs/attempted", 
       "display": { 
        "en-US": "attempted" 
       } 
      }, 
      "version": "1.0.0", 
      "timestamp": "2017-05-25T13:51:45.976631+00:00", 
      "object": { 
       "definition": { 
        "extensions": { 
         "http://h5p.org/x-api/h5p-local-content-id": 5, 
         "http://h5p.org/x-api/h5p-subContentId": "bb5c8621-1bcf-4cc7-b1b0-8af2950bffcd" 
        }, 
        "name": { 
         "en-US": "Drag the words into the correct boxes\n" 
        } 
       }, 
       "id": "https://www.avimegiddo.com/wp-admin/admin-ajax.php?action=h5p_embed&id=5?subContentId=bb5c8621-1bcf-4cc7-b1b0-8af2950bffcd", 
       "objectType": "Activity" 
      }, 
      "actor": { 
       "mbox": "mailto:[email protected]", 
       "name": "Terry Phillips", 
       "objectType": "Agent" 
      }, 
      "stored": "2017-05-25T13:51:45.976631+00:00", 
      "authority": { 
       "mbox": "mailto:[email protected]", 
       "name": "avimegiddo", 
       "objectType": "Agent" 
      }, 
      "context": { 
       "extensions": { 
        "http://id.tincanapi.com/extension/ending-point": 1 
       }, 
       "contextActivities": { 
        "category": [{ 
         "id": "http://h5p.org/libraries/H5P.DragText-1.5", 
         "objectType": "Activity" 
        }], 
        "parent": [{ 
         "id": "https://www.avimegiddo.com/wp-admin/admin-ajax.php?action=h5p_embed&id=5", 
         "objectType": "Activity" 
        }], 
        "grouping": [{ 
         "definition": { 
          "moreInfo": "https://www.avimegiddo.com/2017/04/21/business-emails-short-quizzes/", 
          "type": "http://activitystrea.ms/schema/1.0/page", 
          "name": { 
           "en": "Projects ~ Avi Megiddo" 
          } 
         }, 
         "id": "https://www.avimegiddo.com/2017/04/21/business-emails-short-quizzes/" 
        }] 
       } 
      }, 
      "id": "7b0582d3-c22d-4818-937e-cc0e5ffbbf18" 
     } 
    ] 
} 

      var actorVerbObject = ""; 
      for (i=0; i<3; i++){ 
       actorVerbObject += obj1.statements[i].actor.name + ", " + obj1.statements[i].verb.display['en-US'] + ", " + obj1.statements[i].object.definition.name['en-US'] + "<br />"; 
      } 
      document.getElementById('demo').innerHTML = actorVerbObject; 

     </script> 
    </body> 
</html> 
+0

的可能的複製[如何獲得對象的唯一鍵值對的值(https://stackoverflow.com/questions/24927783/如何獲取這個唯一鍵值對中的對象) – JJJ

+0

請代替張貼大量代碼,點擊''''並創建一個[mcve] – mplungjan

+0

對象。 keys()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys獲勝。 – wostex

回答

0

使用Object.keys看到這個fiddle

var actorVerbObject = ""; 
for (i = 0; i < 3; i++) { 
    var displayLangs = Object.keys(obj1.statements[i].verb.display); 
    var definitionLangs = Object.keys(obj1.statements[i].object.definition.name); 
    actorVerbObject += obj1.statements[i].actor.name + ", " + obj1.statements[i].verb.display[displayLangs[0]] + ", " + obj1.statements[i].object.definition.name[definitionLangs[0]] + "<br />"; 
} 
+0

這不只是英語或法語。它也可以是其他語言。謝謝。 –

+0

更新回答,現在試試。 – richbai90

+0

謝謝你,但你的答案現在缺少動詞。 –