我正在尝试使用JSON文件来填充网页。我递归地循环遍历对象,将key、value属性写入字符串,并使用'list‘属性来增加嵌套级别。我需要一切井井有条。
这是我写的函数:
function recurOBJ(my_obj){
let x, str
str = ``
for( x in my_obj ){
str += x + `: ` + my_obj[x].copy
console.log(x);
if ( my_obj[x].hasOwnProperty('list') ){
recurOBJ(my_obj[x].list)
}
}
console.log(str);
return str
}
这是一个示例对象:
{
"item_01": {
"copy": ["Some text."]
},
"item_02": {
"copy": ["More text."],
"list": {
"listItem01": {
"copy": ["List text."],
"list": {
"item_a": { "copy": ["A: Lorem ipsum dolor sit amet."]},
"item_b": { "copy": ["B: Lorem ipsum dolor sit amet."]},
"item_c": { "copy": ["C: Lorem ipsum dolor sit amet."]},
"item_d": { "copy": ["D: Lorem ipsum dolor sit amet."]}
}
}}
}
}
问题是,当我查看console.log(x)输出时,所有内容都以正确的顺序显示,但是当字符串console.log(str)返回时,它首先显示嵌套的值,然后显示更高级别的项。item01和item02之后。
正确的=> console.log(x):
item_01
item_02
listItem01
item_a
item_b
item_c
item_d
=> console.log(字符串)不正确:
item_a: A: Lorem ipsum dolor sit amet.
item_b: B: Lorem ipsum dolor sit amet.
item_c: C: Lorem ipsum dolor sit amet.
item_d: D: Lorem ipsum dolor sit amet.
listItem01: List text.
item_01: Some text.
item_02: More text.
我不知道该如何补救这件事。我尝试将对象转换为Map以保留顺序,但也不起作用。
https://stackoverflow.com/questions/51792687
复制相似问题