簡體   English   中英

Javascript 嵌套 object 遞歸

[英]Javascript nested object recursive

所以,我做了我的研究,到目前為止我找不到任何好的解決方案來解決我的問題......

所以我有一個 object 方法所以我嘗試了遞歸 function 但它根本不起作用(為什么我在這里)

這個 function go 穿過一層並停下來,她發現 id 3、id 11 都有 1 個孩子,而我希望它更深 Z34D1F91FB2E514B8566FAB1A75A8

我希望這不是重復的帖子

我提前謝謝你

#功能

const haveChild = (obj, parent_id=0) =>{
        for (const [key,value] of Object.entries(obj)){
            if (value && typeof value === "object"){
                if (value['childrens']){
                    for (const [k,v] of Object.entries(value.childrens)){
                        haveChild(v,v.parent_id)
                        console.log('-----',v.name,'parent id= ',v.parent_id)

                    }
                }else{

                }
            }

        }

#數據來自 API


{ 
    "2": {
      "id": "2",
      "parent_id": "0",
      "name": "name1"
    },
    "3": {
      "id": "3",
      "parent_id": "0",
      "name": "name2",
      "childrens": {
        "9": {
          "id": "9",
          "parent_id": "3",
          "name": "name3"
        }
      }
    },
    "11":{
      "id": "11",
      "parent_id": "0",
      "name": "name4",
      "childrens": {
        "16": {
          "id": "16",
          "parent_id": "11",
          "name": "name5",
          "childrens": {
            "21": {
              "id": "21",
              "parent_id": "16",
              "name": "name6",
              "childrens": {
                "23": {
                  "id": "23",
                  "parent_id": "21",
                  "name": "name7"
                }
              }
            }
          }
        }
      }
    } 
}

問題是你第一次調用function,在for循環中, key是每個object的key, value對應的值

但是從第二次開始, key是屬性的名稱, value是屬性的值所以你必須以這種方式創建另一個 object:

{[k]: v}

我還將console.log移到內部 for 循環之外

const haveChild = (obj, parent_id=0) =>{
        for (const [key,value] of Object.entries(obj)){
            if (value && typeof value === "object"){
                if (value.childrens){
                    for (const [k,v] of Object.entries(value.childrens)){
                        haveChild({[k]: v},v.parent_id)
                    }
                }
                console.log('-----',value.name,'parent id= ',value.parent_id);
            }
       }
}

暫無
暫無

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

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