1. 程式人生 > 其它 >js 獲取陣列的深度

js 獲取陣列的深度

技術標籤:js遞迴演算法

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