当前位置: 首页 > 知识库问答 >
问题:

递归循环通过对象构建属性列表

充子航
2023-03-14

情况:我有一个包含多个子和子子对象的大对象,其属性包含多个数据类型。出于我们的目的,该对象类似于以下内容:

var object = {
    aProperty: {
        aSetting1: 1,
        aSetting2: 2,
        aSetting3: 3,
        aSetting4: 4,
        aSetting5: 5
    },
    bProperty: {
        bSetting1: {
            bPropertySubSetting : true
        },
        bSetting2: "bString"
    },
    cProperty: {
        cSetting: "cString"
    }
}

我需要遍历这个对象并构建一个键列表来显示层次结构,因此列表最终如下所示:

aProperty.aSetting1
aProperty.aSetting2
aProperty.aSetting3
aProperty.aSetting4
aProperty.aSetting5
bProperty.bSetting1.bPropertySubSetting
bProperty.bSetting2
cProperty.cSetting

我得到了这个函数,它确实循环遍历对象并吐出键,但不是分层的:

function iterate(obj) {
    for (var property in obj) {
        if (obj.hasOwnProperty(property)) {
            if (typeof obj[property] == "object") {
                iterate(obj[property]);
            }
            else {
                console.log(property + "   " + obj[property]);
            }
        }
    }
}

有人能告诉我怎么做吗?这里有一个jsfiddle供您使用:http://jsfiddle.net/tbyna/

共有1个答案

谈萧迟
2023-03-14

我为你做了一把小提琴。我存储了一个堆栈字符串,如果属性是基元类型,则输出它:

function iterate(obj, stack) {
        for (var property in obj) {
            if (obj.hasOwnProperty(property)) {
                if (typeof obj[property] == "object") {
                    iterate(obj[property], stack + '.' + property);
                } else {
                    console.log(property + "   " + obj[property]);
                    $('#output').append($("<div/>").text(stack + '.' + property))
                }
            }
        }
    }

iterate(object, '')
 类似资料:
  • 问题内容: 情况:我有一个包含多个子对象和子子对象的大对象,其属性包含多个数据类型。为了我们的目的,该对象看起来像这样: 我需要遍历此对象并构建一个显示层次结构的键的列表,因此该列表最终看起来像这样: 我有这个函数,它确实遍历对象并吐出键,但不是按层次排列: 问题答案: 如果属性为原始类型,则我将存储一个字符串,然后将其输出:

  • 我有一个有趣的问题,我不知道如何在不调用方法的情况下解决。 > 我的方法接收用户作为参数。 它调用外部服务并接收Mono 如果Mono不包含错误和我想将其添加到Flux 通量应该是我的方法的结果 现在,不幸的是,在调用我收到的Mono的<code>block()-方法之前,我应该从列表中初始化Flux: 我确信应该有一种方法不中断异步进程链。你知道怎么做吗?

  • 基本上,我正在做一个项目,其中某些类属性和类的名称存储在文本文件中。这里的目标是创建文本文件中列出的特定数据类型(在本例中为Car)的对象列表(我已经完成了),然后将这些对象分配给文本文件中的数据类型。下面是我将使用的文本文件的示例: 汽车:2辆 4 1 1红色3 80.5 20 60 2aadawd 1 3 2蓝色3 80 30 20 1aaxzd 自行车: 3 2 1 2号2号 2 3 基本上

  • 如果以前有人问过这个问题,我很抱歉,但我找不到答案。如何循环使用嵌套数组的数组,并在控制台中打印项目出现的实例数? 因此应该打印出名称“bob”的数字2,因为“bob”在数组中出现两次。 这是我的阵列和我目前拥有的:

  • 本文向大家介绍vue中的循环对象属性和属性值用法,包括了vue中的循环对象属性和属性值用法的使用技巧和注意事项,需要的朋友参考一下 v-for除了可以循环数组,还可以循环对象。 例子: 结果: 补充知识:Vue控制路由滚动行为 跳转路由时,要求跳转到指定路由的某个地方,可以使用scrollBehavior方法控制。 用法: scrollBehavior(to,from,savedPosition)

  • 我需要根据数据库查询的结果集创建可变数量的JSON对象和JSON数组。JSON格式看起来与以下用于谷歌图表的格式非常相似。 我的问题是,我觉得这应该是一个简单的答案,如何在for循环中创建多个具有唯一名称的JSON对象?我的尝试: