记一个JS树结构路径查找
var a=[ { "id" : "0000", "text" : "R1", "children" : [ { "id" : "8978", "text" : "Aad", "children" : [ { "id" : "2312", "text" : "adaada", "children" : [ { "id" : "5154", "text" : "asdsa" }] },{ "id" : "4544", "text" : "afasf", "children" : [ { "id" : "5236", "text" : "afasf" }, { "id" : "2328", "text" : "afasf" } ] }] }, { "id" : "7867", "text" : "R2", "children" : [ { "id" : "8767", "text" : "afasf", "children" : [ { "id" : "2016", "text" : "afafa" }, { "id" : "2017", "text" : "afasd" } ] }, { "id" : "7657", "text" : "h", "children" : [ { "id" : "7867", "text" : "afras" } ] } ] } ] } ];
function buildArray(arrOrigin, id){
var arr = [] // 操作数组
,re =[] // 结果 AND 是否匹配到
,run = true // 运行
// arrOrigin 解析
arrOrigin.map(e=> {
arr.push({
id: e.parent_id,
children: [e],
nextFuncTag: true, // 下一个函数的起点标识
})
})
/**
* 组查询 (无状态函数)
* @e{Array} 下一个元素
*/
function select(e){
if(!run)return
// 截取段落
e.nextFuncTag && (re = [])
if(typeof(e.id)!="undefined")
{
re.push(e.id);
}
if(e.id == id){
run = false
}else// 下一级查询
if(e.children && e.children.length != 0){
e.children.map(select)
}
}
arr.map(select)
return re
}
console.log(buildArray(a, 2312));//["0000", "8978", "2312"]
记一个JS树结构路径查找的更多相关文章
- 记一个js中的map数据结构
<html><body> <script type="text/javascript">let arr =[{demo1:123,demo2:& ...
- 记一个js toUpperCase函数 大小写特性
toUpperCase()是javascript中小写变大写的函数 "ı".toUpperCase() == 'I',"ſ".toUpperCase() == ...
- 3/21 Django框架 模板路径及模板过滤器 1.模板路径查找
3/21 Django框架 模板路径及模板过滤器 1.模板路径查找 先找settings.py里的TEMPLATES列表下的DIRS路径.如果APP_DIRS为True,还会到注册了的APP文件夹下依 ...
- GMap.Net开发之地址解析与路径查找
上一篇介绍了如何在GMap地图上添加多边形,这篇介绍下如何使用在线的地图服务进行“地址解析”和“路径查找”. 先看地址解析,GMap中的地址解析主要用到GeocodingProvider中的如下方法: ...
- 记一个社交APP的开发过程——基础架构选型(转自一位大哥)
记一个社交APP的开发过程——基础架构选型 目录[-] 基本产品形态 技术选型 最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一 ...
- 撸一个JS正则小工具
写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...
- AI工具(缩放工具)(路径查找器)(旋转工具)(镜像工具)5.12
缩放工具:选择图形,点击工具栏缩放工具,”ENTER"输入缩放比例,“复制”完成缩放复制. 路径查找器:选择两个图形,“窗口”“路径查找器”“差集”:大圆减去小圆,留下圆环. “减去顶层”: ...
- python 模块路径查找 及 添加
**** python 模块路径查找: 通过模块的__file__属性来确定: **** 模块路径添加: 方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.ap ...
- 好强大的页面功能调试(js调试,查找js绑定的事件)值得学习
引自:http://www.poluoluo.com/jzxy/201209/178110_2.html 这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的,因为 googl ...
随机推荐
- Windows 快捷方式(*.link)打开方式关联错误
1.Win+r 组合键打开 “运行”,输入 “regedit” 打开 注册表 2.依次打开注册表,定位到以下位置: HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDO ...
- BIZHUB184打印机提示维修召唤(m2)修复
其他不用管,按照操作直接干:菜单键--常用设置--左键---左键---常用设置--左键---右键 咦 神奇的进入了service mode 服务模式 选择CLEAR DATA 项---- ...
- Ubuntu 12.04上安装HBase并运行
Ubuntu 12.04上安装HBase并运行 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.HBase的安装 在官网上下载HBase-1.1.2 ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- Spring的IOC注解开发入门2
注解方式设置属性的值 在我们IOC基于xml属性注入的方式中有(一般推荐set方法) 构造方法注入普通值:<constructor-arg>的使用 set方法注入普通值:<prope ...
- F. Graph Without Long Directed Paths Codeforces Round #550 (Div. 3)
F. Graph Without Long Directed Paths time limit per test 2 seconds memory limit per test 256 megabyt ...
- 深入理解Ribbon之源码解析
什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TC ...
- spring jwt springboot RESTful API认证方式
RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性. Authenticatio ...
- HTTP请求行、请求头、请求体详解
HTTP 请求头各参数具体含义 Header 解释 示例Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/htmlAccept-Charset 浏览器可以接 ...
- firewall
翻译 public (active) 公共(防火墙) target: default 目标: 默认 icmp-block-inversion: no ICMP块反演:NO interfaces: et ...