gpt4 book ai didi

javascript - 在 Javascript 中的对象递归循环的输出中保留顺序

转载 作者:行者123 更新时间:2023-12-03 01:20:27 26 4
gpt4 key购买 nike

我正在尝试使用 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(str):

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.

我不知道如何解决这个问题。我尝试将对象转换为映射以保留顺序,但这也不起作用。

最佳答案

所以,你做的一切都是正确的。除了您也应该返回递归值。

稍微改变一下你的代码,它应该可以工作。

function recurOBJ(my_obj){
let x, str
str = ``
for( x in my_obj ){
str += x + ': ' + my_obj[x].copy + '\n'
if ( my_obj[x].hasOwnProperty('list') ){
str += recurOBJ(my_obj[x].list) + '\n'
}
}
return str
}

输出:

item_01: Some text.
item_02: More text.
listItem01: List text.
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.

关于javascript - 在 Javascript 中的对象递归循环的输出中保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51792687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com