- 树结构,是数据库与视图中,经常能看到一种数据关联。
- 为什么写这个, 看到用递归去处理 树结构的方式。在应该层直接爆掉内存。用存储过程速度特别慢。
- 以前在群里面,讨论,迭代与一个for解决问题。结果迭代出现内存异常。
- 近期遇到,sql语句里面使用 迭代 查询 一个机构下面所有机构,整个迭代。长达8秒。如果不用迭代 只需要1秒。
- 与他们说,你可以去掉迭代。用一个for就可以写出了。我得到的回复是,不信,嘲讽。抵触等等。同事一场,我昨晚好心把他们行过来。告诉他们怎么实现的。还没看清楚代码。直接来一句。不一样是迭代的吗?。说什么反什么。各种 嘲讽等等。这样的同事。真心无法。我也累心了。算了。也不管我的事情。没有执行能力,是这个团队最大的弊端。
- 说了这么多。上代码了。
/** 树结构数据, 各位一级,十位二级,百位三级,千位四级,万位五级,十万位六级**/ 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();