[英]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.