根据每项的 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) })); };