树形数据的处理方法

269 阅读1分钟

第一种方法 --使用递归来处理

1.定义函数

/* 属性数据处理递归函数 */
/*arr, pid = '' 形参*/
export function toDo(arr, pid = '') {
  /* 得到处理之后的树形数据 */
  var newArr = []
  /* 1-循环数组 */
  arr.forEach((item) => {
    if (item.pid === pid) {
      /* 3-收集不是第一层的 */
      var child = toDo(arr, item.id)
      if (child.length) {
      /*把筛选出来的数据   赋值给item的children 表示一级的子级*/
        item.children = child
      }
      // console.log(obj, 8)
      /* 2-筛选第一层  把筛选出来的数据 添加进新数组*/
      newArr.push(item)
    }
  })
  return newArr
}

2.1如果在其他页面 那就导入,例如:

import { toDo } from '@/utils/'

2.2如果在本页面那就直接调用即可---注意需要传参

/*里面需要传入实参--数组*/
toDo(数组)

第二种方法 --下包

如果感觉写递归不太明白 可以使用第三方包 下载引入即可使用
1.下包

yarn add array-to-tree --save

2.导入

import arrayToTree from 'array-to-tree'

3.定义函数

export function toDo2(arr) {
  return arrayToTree(arr, {
    parentProperty: "pid",
    customID: "id",
  });
}

4.直接调用即可

toDo2(数组)