【问题标题】:How to iterate through multidimensional javascript array of objects如何遍历对象的多维javascript数组
【发布时间】:2015-07-28 15:16:34
【问题描述】:

我想询问一些关于 javascript 循环的信息。我有一个看起来像的对象:

[
  {
    "pageId": "1",
    "menuPos": "Parent",
    "mainPageId": "1",
    "subMenu": [
      {
        "pageId": "1",
        "menuPos": "Parent and child",
        "mainPageId": "1",
        "subMenu": [
          {
            "pageId": "67",
            "menuPos": "Child",
            "mainPageId": "67"
          },
          {
            "pageId": "68",
            "menuPos": "Child and paren",
            "mainPageId": "68",
            "subMenu": [
              {
                "pageId": "70",
                "menuPos": "Child",
                "mainPageId": "70"
              },
              {
                "pageId": "69",
                "menuPos": "Child",
                "mainPageId": "69"
              }
            ]
          }
        ]
      }
    ]
  }
]

我尝试使用“数组中的键”,但使用它我只能到达数组的第一级。问题是我不知道这个数组中有多少级别。

我想将该数组中的一些信息分配给一个新的数组对象并将其发送到服务器。

它必须看起来像这样。

[
    {
        "pageId": "1",
        "menuPos": "Parent",
        "subMenu": [
            {
                "pageId": "1",
                "menuPos": "Parent and child",
                "parentId":1,
                "subMenu": [
                    {
                        "pageId": "67",
                        "menuPos": "Child",
                        "parentId": 1,
                    },
                    {
                        "pageId": "68",
                        "menuPos": "Parent and child",
                        "parentId": 1,
                        "subMenu": [
                            {
                                "pageId": "70",
                                "menuPos": "Child",
                                "parentId": 68,
                            },
                            {
                                "pageId": "69",
                                "menuPos": "Child",
                                "parentId": 68,
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

【问题讨论】:

  • 您实际上想找到什么?提示:“递归”是您在这里寻找的内容。
  • 我想获取数组中每个元素的“menuPos”和“pageId”,并将其放到新对象中。

标签: javascript arrays for-loop multidimensional-array frontend


【解决方案1】:

您可以使用递归函数,并且只对对象使用key in 语法,数组是标准循环:

function iterateMenus(menu) {
    for (var i = 0; i < menu.length; i++) {
        console.log(menu[i].pageId); //log more if ya want

        if (menu[i].hasOwnProperty("subMenu") && typeof menu[i].subMenu === "object") {
            iterateMenus(menu[i].subMenu);
        }
    }
}

【讨论】:

  • 哇,谢谢伙计,它现在可以工作了!我也想现在是否可以使用这个函数来制作我在帖子中显示的输出结构?
猜你喜欢
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 2020-09-28
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多