递归)"/>
JavaScript 将树形结构转换一维数组(递归)
将树形结构转换为一维数组是一个常见的任务,通常使用递归或迭代的方法来完成。具体案例实现如下:
function flattenTree(treeData) {const result = [];function traverse(node) { if (node.children && node.children.length > 0) {for (const child of node.children) {traverse(child);}}delete node.childrenresult.push(node);}traverse(treeData);return result;
}// 示例数据结构
const treeData = {name: "A",children: [{name: "B",children: [{name: "D",children: [],},{name: "E",children: [],},],},{name: "C",children: [{name: "F",children: [],},],},],
};const flattenedArray = flattenTree(treeData);
console.log(flattenedArray);
flattenTree 函数递归地遍历树的每个节点,并将节点添加到结果数组中。如果节点具有子节点,它会继续遍历子节点。最终,你将得到一个包含树中所有节点的一维数组。
代码实现如下:
getOneArr (data) {let newData = []const callback = (item) => {(item.children || (item.children = [])).map(v => {callback(v)})delete item.childrennewData.push(item)}data.map(v => callback(v))return newData
},const flattenedArray = getOneArr(treeData);
console.log(flattenedArray);
getOneArr 使用了递归方法,它接受一个包含树形结构数据的数组 data,并将其转换为一维数组。将数据结构从多维树状结构变成一维数组,然后删除了原始数据中的子节点,最后输出一个一维数组,其中包含了所有节点的数据,同时删除了子节点属性,使其成为一个扁平的结构。
更多推荐
JavaScript 将树形结构转换一维数组(递归)
发布评论