子父节点单个循序获取

  1.  树结构,是数据库与视图中,经常能看到一种数据关联。
  2. 为什么写这个, 看到用递归去处理 树结构的方式。在应该层直接爆掉内存。用存储过程速度特别慢。
  3. 以前在群里面,讨论,迭代与一个for解决问题。结果迭代出现内存异常。
  4. 近期遇到,sql语句里面使用 迭代 查询 一个机构下面所有机构,整个迭代。长达8秒。如果不用迭代 只需要1秒。
  5. 与他们说,你可以去掉迭代。用一个for就可以写出了。我得到的回复是,不信,嘲讽。抵触等等。同事一场,我昨晚好心把他们行过来。告诉他们怎么实现的。还没看清楚代码。直接来一句。不一样是迭代的吗?。说什么反什么。各种 嘲讽等等。这样的同事。真心无法。我也累心了。算了。也不管我的事情。没有执行能力,是这个团队最大的弊端。
  6. 说了这么多。上代码了。
/** 树结构数据, 各位一级,十位二级,百位三级,千位四级,万位五级,十万位六级**/
var node = {
 	          1:[11,12,13,14],
 	          11:[111,112,113,114],
 	          12:[121,122,123,124],
 	          13:[131,132,133,134],
 	          14:[141,142,143,144],
 	          111:[1111,1112,1113,1114],
 	          112:[1121,1122,1123,1124],
 	          113:[1131,1132,1133,1134],
 	          114:[1141,1142,1143,1144],
 	          121:[1211,1212,1213,1214],
 	          122:[1221,1222,1223,1224],
 	          123:[1231,1232,1233,1234],
 	          124:[1241,1242,1243,1244],
 	          131:[1311,1312,1313,1314],
 	          132:[1321,1322,1323,1324],
 	          133:[1331,1332,1333,1334],
 	          134:[1441,1342,1343,1344],
 	          141:[1411,1412,1413,1414],
 	          142:[1421,1422,1423,1424],
 	          143:[1431,1432,1433,1434],
 	          144:[1441,1442,1443,1444],
 	          1444:[14441],
 	          1321:[13211],
 	          14441:[144411],
 	          144411:[1444111]
 	      }

/**十二行代码,的解决。思想很简单,一个个查就行了。
     defaultNode ,查询出的节点子集。
      restrun 是返回的结果
      nodeList 是 查询的节点
**/
function nodefun(id){
	var defaultNode = node[id],restrun = [id].concat( defaultNode ),nodeList = [].concat( defaultNode );
	for( ; ;  ){
			id = nodeList.shift();
			if(typeof( id ) === "undefined") break;
			defaultNode = node[ id ];
			if(typeof( defaultNode ) === "undefined")continue;
			restrun = restrun.concat( defaultNode );
			nodeList = nodeList.concat( defaultNode );
	}
	document.write( restrun );
	document.write( "<br/>" );
	
}
function testNode(){
	for(var id in node){
		nodefun( id );
		if( id > 110 ){
			testDDD( node[id]);
		}	
	}
}
function testDDD(node){
	for(var id in node ){
		nodefun( node[id] );
	}
}
testNode();

 

猜你喜欢

转载自jahu.iteye.com/blog/2339826
今日推荐