簡體   English   中英

如何使用JavaScript打印JSON對象的特定部分?

[英]How can I print a specific part of a JSON object with JavaScript?

我想知道用什么將文檔從JSON轉換為數組,並打印用戶想要的數組部分。 另外,如何將其放在HTML文檔中,以便用戶可以搜索數組的任何部分。

以下是JSON

 { "A": { "1": { "1\º": [ "Semestre 1" ] }, "2": { "1\º": [ "Semestre 1" ] } }, "B": [ ], "c": { "2": { "1\º": [ "Semestre 1" ] }, "3": { "1\º": [ "Semestre 1" ] }, "44": { "1\º": [ "Semestre 1" ] }, "G6": { "1\º": [ "Semestre 1" ] }, "GP98": { "1\º": [ "Semestre 1" ] }, "654": { "1\º": [ "Semestre 1" ] }, "5556": { "1\º": [ "Semestre 1" ] }, "7654": { "1\º": [ "Semestre 1" ] } } } 

謝謝你的幫助。

根據您希望您的字符串/字符串集合看起來像什么,可以執行以下選項之一。

JSON.Stringify將JavaScript對象或值轉換為JSON字符串。

printDataWithStringify = (x) => {
  console.log(JSON.stringify(data[x]))
}

> {"1":{"1º":["Semestre 1"]},"2":{"1º":["Semestre 1"]}}

如果您想更進一步,可以嘗試以下代碼。

var printedStrings = []

checkNestedData = (x, y) => {

  if (typeof(x[y]) === 'object' && !Array.isArray(x[y][property1])) {
    printedStrings.push(y)
    for (var property1 in x[y]) {
      checkNestedData(x[y], property1)
    }
  } else {
    printedStrings.push(x[y]);
  }

}


printDataWithKeysAndValues = (x) => {
  var part = data[x]
  for (var property1 in part) {
    checkNestedData(part, property1)
  }
  console.log(printedStrings)
}

> 1,1º,Semestre 1,2,1º,Semestre 1

上面的代碼利用了for...in循環,該循環用於遍歷JavaScript對象。 part是從x的鍵(在本例中為"A" )中的data中檢索信息時獲得的對象。 property1表示當前對象( part )的鍵,並且是我們遍歷part for...in循環的迭代器。

為了更進一步, checkNestedData檢查是否在當前對象中嵌套了另一個對象。 如果它是一個對象(沒有用於孩子的數組),則將y (請記住,這是原始循環中的鍵( property1 ))推入初始化的printedStrings數組中。 然后執行另一個循環,然后對新循環中的當前迭代遞歸運行checkNestedData

此遞歸回調將一直運行,直到最后一個子代不是填充對象為止。

一旦遍歷整個對象,存儲從對象中提取的鍵和值(包括嵌套對象),我們就可以簡單地console.log最終數組,其中包含該部分中所有的鍵和值( "A" ) 數據的。

根據您希望字符串格式化的方式,您可以通過插值或串聯從字符串中追加/刪除內容。 但是此解決方案應該為您提供每個鍵和值,並將它們作為字符串存儲在數組中。

 var data = { "A": { "1": { "1\º": [ "Semestre 1" ] }, "2": { "1\º": [ "Semestre 1" ] } }, "B": [ ], "c": { "2": { "1\º": [ "Semestre 1" ] }, "3": { "1\º": [ "Semestre 1" ] }, "44": { "1\º": [ "Semestre 1" ] }, "G6": { "1\º": [ "Semestre 1" ] }, "GP98": { "1\º": [ "Semestre 1" ] }, "654": { "1\º": [ "Semestre 1" ] }, "5556": { "1\º": [ "Semestre 1" ] }, "7654": { "1\º": [ "Semestre 1" ] } } } printDataWithStringify = (x) => { console.log('STRINGIFY: ' + JSON.stringify(data[x])) } var printedStrings = [] checkNestedData = (x, y) => { if (typeof(x[y]) === 'object' && !Array.isArray(x[y][property1])) { printedStrings.push(y) for (var property1 in x[y]) { checkNestedData(x[y], property1) } } else { printedStrings.push(x[y]); } } printDataWithKeysAndValues = (x) => { var part = data[x] for (var property1 in part) { checkNestedData(part, property1) } console.log('ALL KEYS AND VALUES: ' + printedStrings) } printDataWithStringify("A") printDataWithKeysAndValues("A") 

暫無
暫無

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

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