遇到常見的遞歸的需求,總結記錄下方法,下次直接使用。

一 :遞歸將最後一級的 children 修改爲 undefined

getTreeData(data) {
  // 循環遍歷json數據
  for (var i = 0; i < data.length; i++) {
    if (data[i].children.length < 1) {
      // children若爲空數組,則將children設爲undefined
      data[i].children= undefined;
    } else {
      // children若不爲空數組,則繼續 遞歸調用 本方法
      this.getTreeData(data[i].children);
    }
  }
  return data;
}

二 :遞歸根據當前節點的 id 返回當前節點的 name值

getGroupName(data, id) {
  let result;
  if (!data) {
    return;
  }
  for (let i = 0; i < data.length; i++) {
    let item = data[i];
    if (item.id == id) {
      result = item.name;
      break;
    } else if (item.children && item.children.length > 0) {
      result = this.getGroupName(item.children, id);
    }
  }
  return result;
}

三 :遞歸根據 子id 返回所有的父級id

getParents(data, id) {
   for (var i in data) {
     if (data[i].children) {
       var ro = this.getParents(data[i].children, id);
       if (ro !== undefined) {
         return ro.concat(data[i].value);
       }
     }
     if (data[i].value == id) {
       return [];
     }
   }
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章