编写背景
由于最近需要做文件的文档归类编号管理。比较理想的情况是这样的:1个公司下有多个项目,1个项目下有多个文档。但是实际的情况却不是这样的,实际的情况是公司、项目、案卷等是一种多级无限嵌套结构,而文件挂在最终的案卷下,而此时我们需要求得此处文件的文档归类编号,以便于文件查找。而在原始的数据中,并没有此功能,也就是说根本就没有当前所要查询的树节点中的层级内节点顺序编号。
而我的做法是这样的,既然源数据中没有层级内节点顺序编号,那就添加即可。因而我在做的时候,就是采用的sql查询,通过listNo的排序字段,保证查询出的树节点信息都是有序的,这是一个前提。然后依据此前提的背景下,通过给有效节点添加列表层级内排序属性字段listIndex
,再使用递归,保证将节点树中所有的当前文件父节点编号全部查询,并拼接成自己所想要的文件分类编号。
源码
db.js数据源
var listObj = [
{
id : '1|'
,name : '公司1'
,parentId : -1
,nlevel : 0
,listNo : 1
}
,{
id : '5784|'
,name : '公司2'
,parentId : -1
,nlevel : 0
,listNo : 2
}
,{
id : '5798|'
,name : '公司3'
,parentId : -1
,nlevel : 0
,listNo : 5799
}
,{
id : '5806|'
,name : '公司4'
,parentId : -1
,nlevel : 0
,listNo : 5807
}
,{
id : '1|2|'
,name : '项目1'
,parentId : 1
,nlevel : 1
,listNo : 2
}
,{
id : '1|5783|'
,name : '项目2'
,parentId : 1
,nlevel : 1
,listNo : 5783
}
,{
id : '1|2|3|'
,name : '文件1'
,parentId : 2
,nlevel : 2
,listNo : 3
}
,{
id : '1|2|5781|'
,name : '文件2'
,parentId : 2
,nlevel : 2
,listNo : 10
}
];
var mapObj = {
id : '1|2|5781|'