扫码关注官方订阅号
数据里面是n个对象 每个对象具备自己的id和所属id 从而形成多级的父子孙……关系 现在要根据一身的id和所属的id过滤出该对象的所有后代
认证高级PHP讲师
可以去看看多叉树吧,情况有点像
1.先过滤 parentId = id 的所有节点, 并将节点的id存到一个列表里 list12.再过滤 parentId in list1 的所有节点, 并将节点的id存到列表里 list23.再过滤 parentId in list2 的所有节点, 并将节点的id存到列表里 list34...5......
执行到哪一步的到的列表为空了,结束判断把list1, list2, list3 ... listN 合并起来,就是所有的后代
定义一个方法 首先用for循环找到第一个子代push进入预先定义好的数组 并获得该子代的id再次调用该方法
点击页面的按钮调用方法输出筛选后的数组
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="shuchu('东-河北')">sasfYJ;/SDFZGHJKL;YTEASDFGHJ</button> <script> var shuju=[ {id:'远东机构', suoshu:'远东集团'}, {id:'远东', suoshu:'远东机构'}, {id:'东-河北', suoshu:'远东'}, {id:'东-河北-承德', suoshu:'东-河北'}, {id:'东-河北-承德-x', suoshu:'东-河北-承德'}, {id:'东-河北-承德-y', suoshu:'东-河北-承德'}, {id:'东-河北-保定', suoshu:'东-河北'}, {id:'东-河北-保定-x', suoshu:'东-河北-保定'}, {id:'东-河北-保定-y', suoshu:'东-河北-保定'}, {id:'东-河南', suoshu:'远东'}, {id:'东-河南-承德', suoshu:'东-河南'}, {id:'东-河南-承德-x', suoshu:'东-河南-承德'}, {id:'东-河南-承德-y', suoshu:'东-河南-承德'}, {id:'东-河南-保定', suoshu:'东-河南'}, {id:'东-河南-保定-x', suoshu:'东-河南-保定'}, {id:'东-河南-保定-y', suoshu:'东-河南-保定'}, {id:'远西', suoshu:'远东机构'}, {id:'西-河北', suoshu:'远西'}, {id:'西-河北-承德', suoshu:'西-河北'}, {id:'西-河北-承德-x', suoshu:'西-河北-承德'}, {id:'西-河北-承德-y', suoshu:'西-河北-承德'}, {id:'西-河北-保定', suoshu:'西-河北'}, {id:'西-河北-保定-x', suoshu:'西-河北-保定'}, {id:'西-河北-保定-y', suoshu:'西-河北-保定'}, {id:'西-河南', suoshu:'远西'}, {id:'西-河南-承德', suoshu:'西-河南'}, {id:'西-河南-承德-x', suoshu:'西-河南-承德'}, {id:'西-河南-承德-y', suoshu:'西-河南-承德'}, {id:'西-河南-保定', suoshu:'西-河南'}, {id:'西-河南-保定-x', suoshu:'西-河南-保定'}, {id:'西-河南-保定-y', suoshu:'西-河南-保定'} ]; var shaixuanj=[]; function shaixuan(suoshu){ for(var i=0;i<shuju.length;i++){ // console.log(shuju.suoshu,suoshu); if(shuju[i].suoshu==suoshu){ shaixuanj.push(shuju[i]); shaixuan(shuju[i].id); } } for(var j=0;j<shaixuanj.length;j++){ console.log(shaixuanj[j].id); } console.log('结束'); } function tianjia(num){ shaixuanj.push(num); shaixuan(num.id); console.log(1); } function shuchu(num){ console.log(shaixuan(num)); //console.log(shaixuanj); } </script> </body> </html>
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
可以去看看多叉树吧,情况有点像
1.先过滤 parentId = id 的所有节点, 并将节点的id存到一个列表里 list1
2.再过滤 parentId in list1 的所有节点, 并将节点的id存到列表里 list2
3.再过滤 parentId in list2 的所有节点, 并将节点的id存到列表里 list3
4...
5...
...
执行到哪一步的到的列表为空了,结束判断
把list1, list2, list3 ... listN 合并起来,就是所有的后代
定义一个方法 首先用for循环找到第一个子代push进入预先定义好的数组 并获得该子代的id再次调用该方法
点击页面的按钮调用方法输出筛选后的数组