数据里面是n个对象 每个对象具备自己的id和所属id 从而形成多级的父子孙……关系 现在要根据一身的id和所属的id过滤出该对象的所有后代
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再次调用该方法
点击页面的按钮调用方法输出筛选后的数组
<!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>
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
可以去看看多叉树吧,情况有点像