将扁平数据,转为树形数据,递归处理
代码如下:
<script> // 需求:将扁平数据转为树形结构 const list = [ { id: 1, name: "广东", pid: 0 }, { id: 11, name: "深圳", pid: 1 }, { id: 12, name: "东莞", pid: 1 }, { id: 2, name: "湖南", pid: 0 }, { id: 21, name: "长沙", pid: 2 }, { id: 22, name: "岳阳", pid: 2 }, ]; function ArrTree(list,pid){ // 定义新数组用来存储树形数据 const newArr = [] list.forEach(v => { // 循环遍历时判断数组每一项的pid是否等于传进来的pid if(v.pid===pid){ newArr.push(v) // 再次调用函数,并接收返回的数据,依然传入两个参数,数组和筛选出来的每一项id,省份的pid根市的id是相等的 const children = ArrTree(list,v.id) if(children.length){ // 将第二次/第三次...的数据添加到children子对象中 newArr[newArr.length-1].children = children } } }); // 返回数据 return newArr } // 第一次给函数设置两个参数,数组、因为所有省份的pid都是0设置默认参数 console.log(ArrTree(list,0)); </script>
处理完如图:
![](https://img2023.cnblogs.com/blog/3034394/202212/3034394-20221206233906609-2026206170.png)