javascript - JSON 对象中嵌套的 JSON 对象

标签 javascript json dom

我正在尝试动态构建菜单,并将数据输出到以下形式的 JSON 对象。

"Link 1": {
    "href":"#",
    "Sub Link 1": {
        "href":"#"
    },
    "Sub Link 2": {
        "href":"#",
        "Sub Sub Link 1": {
            "href":"#"
        },
        "Sub Sub Link 2": {
            "href":"#"
        }       
    }       
}

首先,我想知道这是否适合链接层次结构的设计。

另一方面, 当我遍历数组时,我只能获得名称“Link 1”,但不能获得链接层次结构下的任何属性。

我正在使用的循环如下:

for(var item in jsonMenu) {
    console.log(item)
}

它输出:Link 1, Link 2, Link 3 但我希望能够访问该对象内的其他 JSON 对象。

我尝试嵌套另一个循环,但我得到的只是数字:0, 1, 2, 3 我怀疑这是字符串的长度。

我也试过使用:

item.hasOwnProperty(键)

但它不起作用:它返回 Uncaught Reference Error: key does not exist

任何帮助将不胜感激

编辑:

到目前为止,这是我所拥有的,但在我看来,菜单的开销太大,到目前为止它的执行时间为 O(n^2),我仍然需要深入一层,所以执行时间为 O(n^3):

 for(var item in jsonMenu) {
     if(jsonMenu.hasOwnProperty(item)) {
        for(var attr in jsonMenu[item]) {   
            console.log(attr);
        }
        console.log(item + " => " + jsonMenu[item])
    }
 }

最佳答案

如果可能的话,我建议重组源数据,使名称成为对象的属性而不是键名称本身,如下所示:

{
    "name": "Link 1"
    "href":"#",
    "children": [
    {
        "name": "Sub Link 1"
        "href":"#"
    }       
}

这是更好的语义,允许您轻松添加额外的属性,并且更容易处理,也可能更容易生成,因为它更好地匹配大多数编程语言中的对象。否则,您将假设对象中的每个键都是一个新节点。

关于javascript - JSON 对象中嵌套的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344446/

相关文章:

php - 从 JSON 中扫描日期并根据日期打印特定内容

php - 过多的 DOM 元素货币符号

javascript - 对各种 webpack shimming 方法的困惑

javascript - 在客户端清理/重写 HTML

php - AJAX 意外 token /未终止的字符串文字

javascript - 你如何重构 JavaScript、HTML、CSS 等?

javascript - Discordjs setInterval 不更新 json 文件

json - Go:JSON值未解析?

javascript - HTML 如果我按 Tab 键,焦点接下来会去哪里?

Javascript 使用在函数外部声明的变量返回值 + undefined