1.数组转树结构
/**
* 将数组转换成对象的形式,childrenStr实现嵌套
* @param data 当前数组数据
* @param idStr 唯一值
* @param pIdStr 父唯一值
* @param childrenStr 包含孩子的key名称
* @return tree结构
*/
export function arrToTree(
data: any[],
idStr: string,
pIdStr: string,
childrenStr: string,
) {
const map = new Map<string, any>();
const result: any[] = [];
data.forEach((e) => {
map.set(e[idStr], e);
});
data.forEach(function (item) {
const parent = map.get(item[pIdStr]);
if (parent) {
if (!parent[childrenStr]) {
parent[childrenStr] = [];
}
parent[childrenStr].push(item);
} else {
result.push(item);
}
});
return result;
}
2.树结构转数组
/**
* 将树结构的数据改为平级
* @param data 当前数组数据
* @return 数组
*/
export const treeToArr = (data: any[]) => {
let result: any[] = [];
cloneDeep(data).forEach((item) => {
result.push(item);
if (item.children) {
const children = item.children;
delete item.children;
result= [...result, ...treeToArr(children)];
}
});
return result;
};