// 平铺数据转成树结构
const toTree = (records, pid = 'parentId') => {
const map = {},result = []
records.forEach(item =>map[item.id] = item);
records.forEach(item => {
// 需要根据实际情况修改下面的条件 ,我这里后端返回的第一层是parentId为-1
if (item[pid] !== '-1') {
let parent = map[item[pid]];
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
// 树结构转成平铺数据
const stretch = (treeArr, child = "childrens") => {
const arr1 = [...treeArr],arr2 = []
while (arr1.length) {
const deleteObj = arr1.shift()
arr2.push(deleteObj)
if (deleteObj[child]?.length) {
arr1.push(...deleteObj[child].map(v => {
v.parentId = deleteObj.id
return v
}))
}
}
return arr2
}
// 递归将树形数据转平铺数据
const stretchRecursion = (treeArr, child = "childrens") => {
const result = []
const _deep = (arr) => {
arr.forEach(item => {
result.push(item)
if (Array.isArray(item[child]) && item[child].length) {
_deep(item[child])
}
})
}
_deep(treeArr)
return result
}
js 数组的拉伸和重组树结构
最新推荐文章于 2024-06-13 14:30:24 发布