一维数组与树形数组互转

397 阅读1分钟

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, []);
};