我这里要用ext实现一个tree目录,显示是接收后台传过来的一串json格式,格式如下:
[{"id":"1","text":"父节点1","link":"","children":[{"id":"11","text":"儿子节点1","link":"","children":[{"id":"111","text":"孙子节点1","link":"","children":[]}]}]},
{"id":"2","text":"父节点2","link":"","children":[]},
{"id":"3","text":"父节点3","link":"","children":[]}],一个父节点下可能有好几层子节点,
我现在想做一个查询功能,比如输入孙子节点,就会将孙子节点和该孙子节点所在的上级节点查询出来,并将查询后的结果以json格式返回,这样便于将查询结果生成新的目录,这里需要用到递归,并在递归的过程中做匹配,我现在的写法如下面,这个写法显然有问题,做多只能匹配到儿子节点,希望高手给予指点,谢谢!
function parseJson(strJson,param){
var result=[];
for(var i=0;i<strJson.length;i++){
var st=strJson[i];
if(st.text.indexOf(param)>=0){
result.push(st);
}
else{
var flag="0";
var cts=st.children;
for(var j=0;j<cts.length;j++){
var ct=cts[j];
if(ct.text.indexOf(param)>=0){
flag="1";
}else{
}
}
if(flag=="1"){
result.push(st);
}
}
parseJson(st,param);
}
return result;
}
[{"id":"1","text":"父节点1","link":"","children":[{"id":"11","text":"儿子节点1","link":"","children":[{"id":"111","text":"孙子节点1","link":"","children":[]}]}]},
{"id":"2","text":"父节点2","link":"","children":[]},
{"id":"3","text":"父节点3","link":"","children":[]}],一个父节点下可能有好几层子节点,
我现在想做一个查询功能,比如输入孙子节点,就会将孙子节点和该孙子节点所在的上级节点查询出来,并将查询后的结果以json格式返回,这样便于将查询结果生成新的目录,这里需要用到递归,并在递归的过程中做匹配,我现在的写法如下面,这个写法显然有问题,做多只能匹配到儿子节点,希望高手给予指点,谢谢!
function parseJson(strJson,param){
var result=[];
for(var i=0;i<strJson.length;i++){
var st=strJson[i];
if(st.text.indexOf(param)>=0){
result.push(st);
}
else{
var flag="0";
var cts=st.children;
for(var j=0;j<cts.length;j++){
var ct=cts[j];
if(ct.text.indexOf(param)>=0){
flag="1";
}else{
}
}
if(flag=="1"){
result.push(st);
}
}
parseJson(st,param);
}
return result;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货