首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在很好的时间复杂度下遍历嵌套JSON对象?

如何在很好的时间复杂度下遍历嵌套JSON对象?
EN

Stack Overflow用户
提问于 2021-03-29 22:14:44
回答 1查看 91关注 0票数 0

我有一个JSON对象,它有可能被嵌套几次,如下所示:

代码语言:javascript
复制
{
"type": "cars",
"nested1": {
    "nested2": {
        "name": "tesla",
        "nested3": {
            "name": "audi",
            "make": "q7",
            "nested4": {}
                   }
               }
           }
}

我希望能够遍历每个字段,检查它是否包含一个对象作为它的值,如果是这样的话,进入这个嵌套的,检查包含对象作为它的值的字段,依此类推……

我尝试过琐碎的方法,但时间复杂度变得非常糟糕。对于3个嵌套对象,它是O(n^3),因为您必须遍历每个嵌套对象中的每个字段。

有没有什么数据结构可以给我更好的时间复杂度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 22:39:04

除非使用了其他信息,否则扫描结果将为O( Nₚ),其中Nₚ是属性的数量。

在您的示例中,顶级对象具有2个属性,即下一个级别1、下一个级别2、第三个级别3和最终级别0。你需要访问8个属性,2+1+2+3+0。尽管8恰好是2³,但这并不会使算法O(N³)适用于任何有用的N,因为如果您有一个具有不同数量的属性或填充对象的级别多于或少于三个级别的示例,则该关系将断开。选择代表问题的N是正常的。如果您将JSON序列化为没有额外空格的文件,则查找空对象将变成对'{}‘的子字符串搜索,对于子字符串搜索,您将不会改进O(N)。

改进算法的唯一方法是使用一些额外的信息来避免访问每个属性;例如,如果您知道空对象只出现在第四层,那么您就不需要在该层或更深层查看对象中的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66855849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档