所以,我做了我的研究,到目前為止我找不到任何好的解決方案來解決我的問題......
所以我有一個物件方法,所以我嘗試了一個遞回函式,但它根本不起作用(為什么我在這里)
此功能通過一層并停止,她發現 id 3 和 id 11 都有 1 個孩子,而我希望它更深入
我希望這不是重復的帖子
我提前謝謝你
#功能
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"
}
}
}
}
}
}
}
}
uj5u.com熱心網友回復:
問題是第一次呼叫函式,在for回圈中,key是每個物件的key和value對應的value
但是從第二次開始key是屬性的名稱和屬性value的值所以你必須以這種方式創建另一個物件:
{[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);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/421968.html
標籤:
上一篇:如何從陣列串列中查找物件
