[英]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.