`
jahu
  • 浏览: 60984 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

子父节点单个循序获取

 
阅读更多
  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();

 

 

分享到:
评论

相关推荐

    删除TreeView节点以及其子节点

    在Delphi编程环境中,删除`TreeView`控件中的节点及其子节点是一项常见的操作。这个话题主要涉及以下几个知识点: 1. **TreeView控件**:TreeView是Windows应用程序中常用的控件,用于展示层次结构的数据,比如文件...

    对Xpath 获取子标签下所有文本的方法详解

    有时,我们可能需要提取某个父元素下所有子元素的文本,而不仅仅是单个元素的文本。XPath提供了多种方法来处理这种情况。 1. **`string()` 函数** `string()`函数是XPath中用于获取节点文本内容的一个非常实用的...

    CTreectrl控件选择性选中节点

    这可以通过递归遍历CTreeCtrl的所有子节点来实现,每次调用GetNextVisibleItem获取下一个可见节点。 7. **UI反馈**:在处理选择事件后,记得更新UI以反映节点的新状态。例如,如果禁用了某个节点的选中,应确保控件...

    父节点可控的分布式缠绕多路径路由算法.pdf

    为了应对这一挑战,提出了父节点可控的分布式缠绕多路径路由算法(DPCBMR)。该算法基于分层多父节点拓扑控制策略和协作式数据转发机制,以提高传输过程中的可靠性。 DPCBMR算法通过在多跳转发阶段引入最优父节点...

    ztree获取当前选中节点子节点id集合的方法

    在处理与树形结构相关的操作时,有时我们需要获取当前选中节点的子节点ID集合,以便进行进一步的数据处理或操作。本篇将详细介绍如何在ZTree中实现这一功能,同时解析`transformToArray()`方法的使用。 首先,获取...

    Delphi遍历某一节点下所有叶节点

    后序遍历是一种先访问子节点再访问父节点的遍历方式。在树形结构中,后序遍历通常用于需要先处理所有子节点然后再处理当前节点的情况,例如计算一个文件夹及其所有子文件夹的总大小等场景。 #### 实现细节 下面是...

    循序渐进Oracle 数据库管理、优化与备份恢复.pdf

    ### 循序渐进Oracle数据库管理、优化与备份恢复 #### Oracle数据库管理 Oracle数据库是全球最流行的数据库管理系统之一,广泛应用于企业级数据处理。管理Oracle数据库涉及多个方面,包括但不限于: 1. **安装与...

    Javascript removeChild()删除节点及删除子节点的方法

    有时,你可能需要删除一个父节点的所有子节点,而不是单个节点。下面的代码片段展示了如何做到这一点: ```javascript var f = document.getElementById("f"); var childs = f.childNodes; // 错误的做法,只会...

    pb 获取子文件夹名称

    标题“pb 获取子文件夹名称”指的是在PowerBuilder(PB)环境中,如何获取一个特定文件夹下的所有子文件夹名称。PowerBuilder是一款历史悠久的可视化编程工具,常用于开发企业级应用,尤其在数据库应用程序中非常...

    服务帐户循序渐进指南.docx

    《服务帐户循序渐进指南》是一份详细阐述如何在Windows Server 2008 R2和Windows 7环境中管理服务账户的技术文档。本文档主要关注两种新的账户类型:托管服务账户和虚拟账户,它们旨在提高网络应用程序的安全性和可...

    C++ json、json字符串处理等json解析类源码

    4获取父节点 5获取当前节点数组、对象大小 6获取当前节点数组、对象中指定序号的元素 7设置当前节点 8判断当前节点是否合法 9获取当前节点键 10获取当前节点所有子元素 11获取当前节点值类型 12获取当前节点值 源码...

    HtmlAgilityPack获取HTML节点内容

    除了单个节点,HtmlAgilityPack也支持获取一组节点。例如,要获取所有`&lt;p&gt;`标签的内容,可以这样操作: ```csharp // 获取所有节点 var paragraphNodes = doc.DocumentNode.SelectNodes("//p"); if ...

    DOM(二).pdf

    2. 添加节点:`appendChild()`用于将新节点添加到父节点的末尾,`insertBefore()`可以在指定子节点之前插入新节点。 3. 删除节点:`removeChild()`方法可以移除指定的子节点。 4. 复制节点:`cloneNode()`方法用于...

    java tree的实现

    `TreeNode` 类代表了树中的单个节点,每个节点可以有父节点、子节点列表以及一些自定义的属性如值和文本。 - **构造函数**:提供了两个构造函数,一个是默认构造函数,另一个接收两个字符串参数来初始化节点的值和...

    javascript获取节点

    1. `getElementById`:通过元素的ID获取单个节点。例如:`document.getElementById('myId')`。 2. `getElementsByClassName`:根据类名获取所有匹配的节点。它返回一个NodeList集合,需要遍历才能访问每个元素。...

    两个JSP页面父页面获取子页面内容的两种方法

    本文主要探讨了在JSP页面交互中,父页面获取子页面内容的两种方法,当子页面需要保持隐藏状态时,如何有效获取其内容而不影响父页面的性能和用户体验。 第一种方法是通过Ajax技术进行异步请求。Ajax(Asynchronous ...

    Qt QTreeView使用-QStandardItemModel的使用

    QStandardItem *parentItem = new QStandardItem("父节点"); model-&gt;appendRow(parentItem); ``` 添加子节点: ```cpp QStandardItem *childItem = new QStandardItem("子节点"); parentItem-&gt;appendRow...

    第06章 DOM节点操作(下)

    4. `.parentNode`: 获取当前节点的父节点。 七、DOM树的创建与修改 1. `document.createElement()`: 创建新的元素节点。 2. `document.createTextNode()`: 创建新的文本节点。 3. `document.createAttribute()`: ...

    HTML DOM学习

    父节点包含子节点,同胞节点指的是具有相同父节点的节点。根节点位于节点树的顶部,没有父节点。每个节点可以有零个或多个子节点,并且可以与其他节点通过父、子或同胞关系相联系。 HTML DOM提供了一系列的方法和...

    Treeview中checkbox选择问题

    具体来说,当点击任一节点的`Checkbox`时,我们需要通过脚本逻辑来同步更新该节点的所有子节点及父节点的`Checkbox`状态。 #### 二、关键代码分析 为了更好地理解这个问题的解决方案,我们将对给定的部分代码进行...

Global site tag (gtag.js) - Google Analytics