formatMenu.ts 854 B

123456789101112131415161718192021222324252627282930
  1. function isExist(list, child) {
  2. let flag = true;
  3. list.forEach((item) => {
  4. if (item.id === child.id) {
  5. flag = false;
  6. }
  7. });
  8. return flag;
  9. }
  10. export function listToTree(oldArr) {
  11. oldArr.forEach((element) => {
  12. let parent = element.parent;
  13. if (parent !== null) {
  14. oldArr.forEach((ele) => {
  15. if (ele.id === parent) {
  16. //当内层循环的ID== 外层循环的parendId时,(说明有children),需要往该内层id里建个children并push对应的数组;
  17. if (!ele.children) {
  18. ele.children = [];
  19. }
  20. if (isExist(ele.children, element)) {
  21. ele.children.push(element);
  22. }
  23. }
  24. });
  25. }
  26. });
  27. oldArr = oldArr.filter((ele) => ele.parent === null); //这一步是过滤,按树展开,将多余的数组剔除;
  28. return oldArr;
  29. }