gpt4 book ai didi

javascript - 循环未知深度对象时出现问题

转载 作者:行者123 更新时间:2023-11-28 02:06:56 24 4
gpt4 key购买 nike

我正在研究按投票排序的评论线程。我有一个看起来像这样的基础对象。

{
"user_name": "string",
"comment": "string",
"points": "integer",
"date_time": "dateObject",
"avatar_pic": "URL",
"profile_link": "URL"
}

现在你可以忽略一切都是字符串的事实。只是为了测试而这样做。

这是带有多个注释的较大对象。将会有一个未知的嵌套深度。

{
"comments": [
{
"user_name": "string",
"comment": "string",
"points": "integer",
"date_time": "dateObject",
"child": [
{
"user_name": "string",
"comment": "string",
"points": "integer",
"date_time": "dateObject",
"child" : null,
}
]
},
{
"user_name": "string",
"comment": "string",
"points": "integer",
"date_time": "dateObject",
"child": null
}
]

}

我现在在伪代码中的工作理论是这样的。

for each iteration of loop over comments array call someFunction

someFunction(){
for by points
write properties of object to screen
check if child property has an array. If array call someFunction on that array.
}

基本上,for 循环会自动检查嵌套。然后,如果它在那里,则进一步向下循环,并继续在屏幕上按逻辑顺序构建注释。我要记住的唯一其他要求是嵌套深度。我想根据注释的嵌套级别缩进注释。最多缩进 3 或 4 个,然后它们会直接向下,而不是在页面上进一步缩进。

较大的格式是完全灵活的。如果有更好的数据结构可供使用,我完全支持。我希望这是有道理的,你们摇滚!!

最佳答案

function process (obj, func) {
func(obj);
if (obj.child) {
obj.child.forEach(function (child) {
process(child, func);
});
}
}

用法:

process(yourObj, function (obj) {
// e.g.
cosnole.log(obj.user_name);
});

关于javascript - 循环未知深度对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643505/

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