我想知道用什么来将文档从JSON
转换为数组,并打印用户想要的数组部分。另外,如何将其放在HTML
文档中,以便用户可以搜索数组的任何部分。
下面是JSON
。
{
"A": {
"1": {
"1\u00ba": [
"Semestre 1"
]
},
"2": {
"1\u00ba": [
"Semestre 1"
]
}
},
"B": [
],
"c": {
"2": {
"1\u00ba": [
"Semestre 1"
]
},
"3": {
"1\u00ba": [
"Semestre 1"
]
},
"44": {
"1\u00ba": [
"Semestre 1"
]
},
"G6": {
"1\u00ba": [
"Semestre 1"
]
},
"GP98": {
"1\u00ba": [
"Semestre 1"
]
},
"654": {
"1\u00ba": [
"Semestre 1"
]
},
"5556": {
"1\u00ba": [
"Semestre 1"
]
},
"7654": {
"1\u00ba": [
"Semestre 1"
]
}
}
}
感谢您的帮助。
答案 0 :(得分:0)
根据您想要的字符串/字符串集合的外观,可以执行以下选项之一。
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
是您从data
(在本例中为x
)的键从"A"
检索信息时获得的对象。 property1
代表当前对象(part
)的键,并且是for...in
循环的迭代器,当我们遍历part
时。
为更进一步,checkNestedData
检查当前对象中是否嵌套了另一个对象。如果它是一个对象(没有用于孩子的数组),则将y
(记住这是原始循环中的键(property1
)推入初始化的printedStrings
数组。然后执行另一个循环,然后对新循环中的当前迭代递归运行checkNestedData
。
此递归回调将一直运行,直到最后一个子代不是填充对象为止。
一旦遍历了整个对象,存储了从对象(包括嵌套对象)中提取的键和值,我们只需console.log
最后的数组,该数组将包含所有键和值部分("A"
)。
根据想要格式化字符串的方式,可以通过插值或串联从字符串中追加/删除内容。但是此解决方案应该为您提供每个键和值,并将它们作为字符串存储在数组中。
var data = {
"A": {
"1": {
"1\u00ba": [
"Semestre 1"
]
},
"2": {
"1\u00ba": [
"Semestre 1"
]
}
},
"B": [
],
"c": {
"2": {
"1\u00ba": [
"Semestre 1"
]
},
"3": {
"1\u00ba": [
"Semestre 1"
]
},
"44": {
"1\u00ba": [
"Semestre 1"
]
},
"G6": {
"1\u00ba": [
"Semestre 1"
]
},
"GP98": {
"1\u00ba": [
"Semestre 1"
]
},
"654": {
"1\u00ba": [
"Semestre 1"
]
},
"5556": {
"1\u00ba": [
"Semestre 1"
]
},
"7654": {
"1\u00ba": [
"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")