var jsonData = [{"subnetId":1,"subnetNode":-1,"subnetRemark":"状态自带","subnetName":"中心网络"}, {"subnetId":2,"subnetNode":1,"subnetRemark":"好好的","subnetName":"北京"}, {"subnetId":3,"subnetNode":1,"subnetRemark":"大唐电信","subnetName":"大唐电信"}, {"subnetId":4,"subnetNode":1,"subnetRemark":"","subnetName":"上海"}, {"subnetId":5,"subnetNode":4,"subnetRemark":"","subnetName":"中国联通"}, {"subnetId":6,"subnetNode":3,"subnetRemark":"","subnetName":"移动"}, {"subnetId":7,"subnetNode":2,"subnetRemark":"","subnetName":"你好"}];
有数组如上,用递归的方式实现一下效果,
subnetId与subnetNode相等时,subnetId作为父节点,subnetNode作为子节点
function show(data,node){ var ul = "<ul>"; for(var i=0;i<data.length;i++){ if(data[i]!=null){ if(data[i].subnetNode==node){ ul += "<li style='margin-left:10px;'>"+data[i].subnetName; ul += show(data,data[i].subnetId); ul += "</li>"; } } } ul+="</ul>"; return ul; } var a = show(jsonData,-1); console.log(a); var div = document.createElement(div); div.innerHTML = a; document.body.appendChild(div);