JS - 根据 parent_id 生成树状结构

105 阅读1分钟

根据每项的 parent_id,生成具体树状结构的对象。

  • 简化代码

    const spanningTree = (data, id = null, key = 'parent_id') => data.filter(v => v[key] === id).map(v => ({ ...v, children: spanningTree(data, v.id) }));
    
  • 代码解说

    // 根据 parent_id 生成树结构
    
    const comments = [
      { id: 1, parent_id: null },
      { id: 2, parent_id: 1 },
      { id: 3, parent_id: 1 },
      { id: 4, parent_id: 2 },
      { id: 5, parent_id: 4 },
    ];
    
    const spanningTree = (data, id = null, key = 'parent_id') => {
      // 找一层的数据
      const rank = data.filter(v => v[key] === id);
      // 递归子级
      return rank.map(v => ({ ...v, children: spanningTree(data, v.id) }));
    };