JS的有关递归的知识点(数据无限级联的实现)
所用测试数据:
1 const data = [ 2 { 3 "area_id": 5, 4 "name": "广东省", 5 "parent_id": 0, 6 }, 7 { 8 "area_id": 6, 9 "name": "广州市", 10 "parent_id": 5, 11 }, 12 { 13 "area_id": 7, 14 "name": "深圳市", 15 "parent_id": 5, 16 }, 17 { 18 "area_id": 9, 19 "name": "昌平区", 20 "parent_id": 4, 21 }, 22 { 23 "area_id": 4, 24 "name": "北京市", 25 "parent_id": 3, 26 }, 27 { 28 "area_id": 3, 29 "name": "北京", 30 "parent_id": 0, 31 }, 32 { 33 "area_id": 2, 34 "name": "测试子地区", 35 "parent_id": 1, 36 }, 37 { 38 "area_id": 1, 39 "name": "测试地区", 40 "parent_id": 0, 41 } 42 ]
递归实现无限级数据:
1 function toTreeData(data,pid){ 2 function tree(id) { 3 let arr = [] 4 data.filter(item => { 5 return item.parent_id === id; 6 }).forEach(item => { 7 arr.push({ 8 area_id: item.area_id, 9 label: item.name, 10 children: tree(item.area_id) 11 }) 12 }) 13 return arr.length>0?arr:"" 14 } 15 return tree(pid) // 第一级节点的父id,是null或者0,视情况传入 16 } 17 var tmp=toTreeData(data,0); 18 console.log(tmp);