function print(arr){
for(var i = 0,o;o=arr[i];i++){
o.children && print(o.children);
}
}
var aa = [
{name:'BBB',age:141,children:[{name:'bbb1',age:15},{name:'bbb2',age:19}]},
{name:'C1+',desc:'1',age:131,children:[{name:'c2+',desc:'1',age:15,children:[{name:'c3+',desc:'1',age:11}]},{name:'C2+',desc:'1',age:15,children:[{name:'C3+',desc:'1',age:10}]}]}
];print(aa)问题:获取age==10的对应的所有父集的name拼接的方法(例:C1+C2+C3这条信息是age==10对应的父集信息)
for(var i = 0,o;o=arr[i];i++){
o.children && print(o.children);
}
}
var aa = [
{name:'BBB',age:141,children:[{name:'bbb1',age:15},{name:'bbb2',age:19}]},
{name:'C1+',desc:'1',age:131,children:[{name:'c2+',desc:'1',age:15,children:[{name:'c3+',desc:'1',age:11}]},{name:'C2+',desc:'1',age:15,children:[{name:'C3+',desc:'1',age:10}]}]}
];print(aa)问题:获取age==10的对应的所有父集的name拼接的方法(例:C1+C2+C3这条信息是age==10对应的父集信息)
解决方案 »
- javaee中servlet如何获取jsp页面中的radio按钮组选中的值
- showmodaldialog跳转调用父窗口方法
- 图片加载中的JS怎么写
- jQuery做菜单
- 弹出层操作
- 现在我要在b页面上按一个按钮要回到a页面上完成一个功能,请问,如何定位,回到a页面
- 请问有没有js库可以做出效果展示可拖拽的有向图???
- 大家都进来看看吧,javascript中有这种内置对象吗?
- 一个javascript提交form的问题,请教高手!!!
- 如何获得本页面的高度?急阿
- 在输入框填充之后,再点击输入框,仍然没有触发.blur()和.focus()事件,比较疑惑
- 急~~~~mmGrid ajax加载方式 报数据加载异常
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
function getNames(array,childs,age){
for(var i=0;i<array.length;i++)
{
var item=array[i];
if(item.age==age){
childs.push(item);
return childs;
}
if(item.children&&item.children.length>0){
childs.push(item);
var rs=getNames(item.children,childs,age);
if(rs){
return rs;
}
else{
childs.remove(item);
}
}
}
return false;
}
var aa = [
{name:'BBB',age:141,children:[{name:'bbb1',age:15},{name:'bbb2',age:19}]},
{name:'C1+',desc:'1',age:131,children:[{name:'c2+',desc:'1',age:15,children:[{name:'c3+',desc:'1',age:11}]},{name:'C2+',desc:'1',age:15,children:[{name:'C3+',desc:'1',age:10}]}]}
];
var result=getNames(aa,[],10);
var str="";
for(var i=0;i<result.length;i++){
str+=result[i].name;
}
alert(str);
var aa = [
{name:'BBB',age:141,children:[{name:'bbb1',age:15},{name:'bbb2',age:19}]},
{name:'A1+',desc:'1',age:131,children:[{name:'a2+',desc:'1',age:1311,children:[{name:'a3+',desc:'1',age:11}]},{name:'A2+',desc:'1',age:15,children:[{name:'A3+',desc:'1',age:10}]}]},
{name:'C1+',desc:'1',age:132,children:[{name:'c2+',desc:'1',age:153,children:[{name:'c3+',desc:'1',age:111}]},{name:'C2+',desc:'1',age:151,children:[{name:'C3+',desc:'1',age:10}]}]}
];
需要匹配 15.10 (15代表10前面的age值,10代表后面的age值),需要怎么改造,谢谢
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
function getNames(array,childs,age,results){
for(var i=0;i<array.length;i++)
{
var item=array[i];
if(item.age==age){
childs.push(item);
results.push([].concat(childs));
childs.remove(item);
}
if(item.children&&item.children.length>0){
childs.push(item);
getNames(item.children,childs,age,results);
childs.remove(item);
}
}
return false;
}
var aa = [
{name:'BBB',age:141,children:[{name:'bbb1',age:15},{name:'bbb2',age:19}]},
{name:'A1+',desc:'1',age:131,children:[{name:'a2+',desc:'1',age:1311,children:[{name:'a3+',desc:'1',age:11}]},{name:'A2+',desc:'1',age:15,children:[{name:'A3+',desc:'1',age:10}]}]},
{name:'C1+',desc:'1',age:132,children:[{name:'c2+',desc:'1',age:153,children:[{name:'c3+',desc:'1',age:111}]},{name:'C2+',desc:'1',age:151,children:[{name:'C3+',desc:'1',age:10}]}]}
];
var results=[];
getNames(aa,[],10,results);
console.log(results);//这是那两组数,自己遍历筛选需要的就行了