1、树形菜单添加序号(prop),比如 1-1/1-1-1/1-1-2 这样的
const setIndex = (data) => {
let queue = [...data];
let loop = 0;
while (queue.length > 0) {
loop++
[...queue].forEach((child, i) => {
queue.shift()
if (loop == 1) {
child.prop = i + 1 + "";
}
if (child.children && child.children.length > 0) {
for (let ci = 0; ci < child.children.length; ci++) {
child.children[ci].prop = child.prop + "-" + (ci + 1)
}
queue.push(...child.children)
}
})
}
return data;
}
2、只要最后一级数据数据
const filterLastTree = (treeList, newTreeList) => {
treeList.map((item, index) => {
let tempData: treeItem = {
label: item.label,
prop: item.prop,
};
if (item.children && item.children.length > 0) {
newTreeList.push(
...filterLastTree(item.children, []),
);
} else {
newTreeList.push(tempData);
}
});
return newTreeList;
};
调用:filterLastTree = (treeList, [])
3、完整树状结构数据重组
const filterTree = (treeList, newTreeList) => {
treeList.map((item, index) => {
let tempData: treeItem = {
label: item.label,
prop: item.prop,
children: [],
};
if (item.children && item.children.length > 0) {
filterTree(item.children, tempData.children);
}
newTreeList.push(tempData);
});
return newTreeList;
};
调用:filterTree (treeList, [])