树形数据转化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
toTree(list, parentId = '') {
let childrenMap = {};
let parentMap = {};
let res = [];

//首先按照
list.forEach(function (node) {
node.hasChildren = false;
// 注册子节点映射表
if (!Object.keys(childrenMap).includes(node.parentId)) {
childrenMap[node.parentId] = [];
} else if (Object.keys(parentMap).includes(node.parentId)) {
parentMap[node.parentId].hasChildren = true;
}
childrenMap[node.parentId].push(node);
// 注册父节点映射节点表
parentMap[node.id] = node;
// 查找自己的子节点
if (!Object.keys(childrenMap).includes(node.id)) {
childrenMap[node.id] = [];
} else {
node.hasChildren = true;
}
node.ChildNodes = childrenMap[node.id];
});
if (!parentId) {
// 获取祖先数据列表
Object.keys(childrenMap).forEach(function (item) {
if (!Object.keys(parentMap).includes(item)) {
res = res.concat(childrenMap[item]);
}
});
} else {
if (Object.keys(childrenMap).includes(parentId)) {
return childrenMap[parentId];
} else {
return [];
}
}
return res;
}

树形数据并集

1
2
3
4
5
6
7
8
9
10
11
12
13
checked(id, data, newArr) {
data.forEach((item) => {
if (item.id == id) {
if (item.ChildNodes && item.ChildNodes.length == 0) {
newArr.push(item.id);
}
} else {
if (item.ChildNodes != null && item.ChildNodes.length != 0) {
this.checked(id, item.ChildNodes, newArr);
}
}
});
}