js 獲取陣列的深度
阿新 • • 發佈:2021-01-16
js 獲取陣列的深度
通過遞迴的方法
getDepth(arr, depth) {
var flag = false;
var temp = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i].children instanceof Array) { // 判斷是否是陣列
for (let j = 0; j < arr[i].children.length; j++) {
temp.push(arr[i].children[j]); // 解析出arr下第一層
}
flag = true;
}
}
if (flag) { // 如果還有陣列,則繼續解析,直到最後一層有不為陣列為止
depth++;
return this.getDepth(temp, depth);
} else {
return depth;
}
}
資料例子:
const arr = [
{
"id": 4,
"name": "沙發",
"children": [
{
"id" : 10,
"name": "多人沙發",
"children": [
{
"id": 21,
"name": "雙人沙發(一字)",
"children": [],
"content": []
},
{
"id" : 22,
"name": "三人沙發(一字)",
"children": [],
"content": []
},
{
"id": 23,
"name": "四人沙發(一字)",
"children": [],
"content": []
},
{
"id": 24,
"name": "L型轉角沙發",
"children": [],
"content": []
},
{
"id": 25,
"name": "斜角沙發",
"children": [],
"content": []
},
{
"id": 26,
"name": "U型轉角沙發",
"children": [],
"content": []
},
{
"id": 27,
"name": "弧形沙發",
"children": [],
"content": []
}
]
},
{
"id": 11,
"name": "單人沙發",
"children": [
{
"id": 28,
"name": "帶扶手沙發",
"children": [],
"content": []
}
]
},
{
"id": 12,
"name": "貴妃榻",
"children": [
{
"id": 29,
"name": "貴妃榻",
"children": [],
"content": []
}
]
},
{
"id": 13,
"name": "沙發床",
"children": [
{
"id": 30,
"name": "沙發床",
"children": [],
"content": []
}
]
}
]
},
{
"id": 14,
"name": "沙發",
"children": [
{
"id": 15,
"name": "多人沙發",
"children": [],
"content": []
},
{
"id": 16,
"name": "單人沙發",
"children": [],
"content": []
},
{
"id": 17,
"name": "L型沙發",
"children": [],
"content": []
},
{
"id": 18,
"name": "懶人沙發",
"children": [],
"content": []
},
{
"id": 19,
"name": "沙發床",
"children": [],
"content": []
},
{
"id": 20,
"name": "兒童沙發",
"children": [],
"content": []
}
]
},
{
"id": 31,
"name": "沙發",
"children": [
{
"id": 32,
"name": "沙發",
"children": [],
"content": []
},
{
"id": 33,
"name": "沙發",
"children": [],
"content": []
},
{
"id": 34,
"name": "沙發",
"children": [],
"content": []
},
{
"id": 35,
"name": "沙發",
"children": [],
"content": []
}
]
},
{
"id": 36,
"name": "沙發",
"children": [
{
"id": 40,
"name": "沙發",
"children": [],
"content": []
},
{
"id": 41,
"name": "沙發",
"children": [],
"content": []
}
]
},
{
"id": 37,
"name": "沙發",
"children": [
{
"id": 42,
"name": "沙發",
"children": [
{
"id": 43,
"name": "沙發",
"children": [],
"content": []
}
]
},
{
"id": 44,
"name": "沙發",
"children": []
},
{
"id": 45,
"name": "沙發",
"children": []
},
{
"id": 46,
"name": "沙發",
"children": []
}
]
},
{
"id": 38,
"name": "沙發",
"children": [],
"content": []
},
{
"id": 39,
"name": "沙發",
"children": [],
"content": []
}
]
呼叫getDepth(arr, 1)取得陣列深度為:3