如何使用 JavaScript 递归将树形结构数据转换为列表数据?
如何使用 javascript 递归将树结构数据转换为列表数据
在面试中,你可能会遇到要求使用 javascript 将树形结构数据转换成列表数据的问题。为了解决这一问题,你可以使用递归。
/** input: [{ id: 1, text: 'text1', children: [{ id: 2, text: 'text2', parentId: 1, children: [{ id: 4, text: 'text4', parentId: 2 }] }, { id: 3, text: 'text3', parentId: 1 }] }] output: [{ id: 4, text: 'text4', parentId: 2 }, { id: 2, text: 'text2', parentId: 1 }, { id: 3, text: 'text3', parentId: 1 }, { id: 1, text: 'text1' }, ]; **/ function walk(list) { var output = []; list.forEach(function(item) { if (item.children) { output = output.concat(walk(item.children)); delete item.children; } output.push(item); }); return output; }
在代码中:
- output 数组用于存储转换后的列表数据。
- 遍历给定的树形结构列表,并检查每个元素是否有 children 属性。
- 如果存在 children 属性,递归调用 walk 函数以转换子树。
- 将转换后的子树数据添加到 output 数组中并删除 children 属性以避免循环引用。
- 将当前元素添加到 output 数组中。
- 最终返回转换后的列表数据。
通过这种方式,您可以递归地遍历给定的树形结构,并将所有节点转换为一个列表数据。
以上就是如何使用 JavaScript 递归将树形结构数据转换为列表数据?的详细内容,更多请关注其它相关文章!