簡體   English   中英

如何遍歷對象的多維javascript數組

[英]How to iterate through multidimensional javascript array of objects

我想查詢一些有關在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,
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

您可以使用遞歸函數,並且僅key in對象語法中使用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);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM