当前位置:编程学习 > JS >>

求高手 用js实现 用递归的方法得到如下的树形

var arr1 = {uId:"1",uName:"name1",uPass:"pass1",parentId:"0"}; arr.push(arr1); var arr2 = {uId:"2",uName:"name2",uPass:"pass2",parentId:"1"}; arr.push(arr2); var arr3 = {uId:"3",uName:"name3",uPass:"pass3",parentId:"1"}; arr.push(arr3); var arr4 = {uId:"4",uName:"name4",uPass:"pass4",parentId:"2"}; arr.push(arr4); var arr5 = {uId:"5",uName:"name5",uPass:"pass5",parentId:"3"}; arr.push(arr5); var arr6 = {uId:"6",uName:"name6",uPass:"pass6",parentId:"3"}; arr.push(arr6); var arr7 = {uId:"7",uName:"name7",uPass:"pass7",parentId:"4"}; arr.push(arr7); 用js实现 用递归的方法得到如下的树形 name1 |---name2 |---name4 |---name7 |---name3 |---name5 |---name6
追问:我要的不是这种多个for循环的代码,我需要的是一个递归的方法.
而且不是这种效果,我要的是一个树形结构.
答案:<body>
	<div id="a"></div>
	<script type="text/javascript">
		var arr = new Array();
		var arr1 = {uId:"1",uName:"name1",uPass:"pass1",parentId:"0"};
		arr.push(arr1);
		var arr2 = {uId:"2",uName:"name2",uPass:"pass2",parentId:"1"};
		arr.push(arr2);
		var arr3 = {uId:"3",uName:"name3",uPass:"pass3",parentId:"1"};
		arr.push(arr3);
		var arr4 = {uId:"4",uName:"name4",uPass:"pass4",parentId:"2"};
		arr.push(arr4);
		var arr5 = {uId:"5",uName:"name5",uPass:"pass5",parentId:"3"};
		arr.push(arr5);
		var arr6 = {uId:"6",uName:"name6",uPass:"pass6",parentId:"3"};
		arr.push(arr6);
		var arr7 = {uId:"7",uName:"name7",uPass:"pass7",parentId:"2"};
		arr.push(arr7);
		var str = "";
		for(var i=0;i<arr.length;i++){
			if(arr[i].parentId=="0"){
				str = str+arr[i].uName+"<br/>";
				for(var j=0;j<arr.length;j++){
					if(arr[j].parentId==arr[i].uId){
						str = str+"  |--"+arr[j].uName+"<br/>";
						for(var k=0;k<arr.length;k++){
							if(arr[k].parentId==arr[j].uId){
								str = str+"      |--"+arr[k].uName+"<br/>";
							}
						}
					}
				}
			}
		}
		document.getElementById("a").innerHTML = str;
	</script>
</body>

上一个:关于fckeditor图片上传的问题 怎么用js直接打开上传图片或文件的那个页面如下图
下一个:js /[0-9a-zA-Z]+$/ java [0-9a-zA-Z]+$求达人解释

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,