1.一维数组转树形数组
// + 实现函数签名
// + 实现函数体
// + 处理 root
// + 实现 addChildren 方法
// + 执行 addChildren
const arrayToTree = (arr) => {
if (!Array.isArray(arr) || arr.length < 1) return null;
const [root] = arr.filter(item => item.parentId === null);
const addChildren = (node, dataList) => {
const children = dataList
.filter(item => item.parentId === node.id)
.map(item => addChildren(item, dataList));
return { ...node, children };
};
return addChildren(root, arr);
};
2.树形数组转一维数组
const treeToArray = (node) => {
const nodeToArray = (node, arr) => {
const { children, ...item } = node;
arr.push(item);
children.forEach(child => nodeToArray(child, arr));
return arr;
};
return nodeToArray(node, []);
};