树结构的数据扁平化

javascript 复制代码
function flattenTree(data) {
    data = JSON.parse(JSON.stringify(data));
    var res = [];
    while(data.length) {
        var node = data.shift();
        if (node.children && node.children.length) {
            data = data.concat(node.children);
        }
        delete node.children;
        res.push(node);
    }
    return res;
}

我们用一个数据来测试:

javascript 复制代码
var tree = [{
    id: 1,
    name: '1',
    children: [{
        id: 2,
        name: '2',
        children: [{
            id: 3,
            name: '3',
            children: [{
                id: 4,
                name: '4'
            }]
        }, {
            id: 6,
            name: '6'
        }]
    }]
}, {
    id: 5,
    name: '5'
}]

使用:

javascript 复制代码
console.log(flattenTree(tree));

打印结果:

相关推荐
闲云一鹤10 分钟前
nginx 快速入门教程 - 写给前端的你
前端·nginx·前端工程化
QCY35 分钟前
「完全理解」1 分钟实现自己的 Coding Agent
前端·agent·claude
一拳不是超人1 小时前
Electron主窗口弹框被WebContentView遮挡?独立WebContentView弹框方案详解!
前端·javascript·electron
anyup1 小时前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
雮尘2 小时前
如何在非 Claude IDE (TARE、 Cursor、Antigravity 等)下使用 Agent Skills
前端·agent·ai编程
icebreaker2 小时前
Weapp-vite:原生模式之外,多一种 Vue SFC 选择
前端·vue.js·微信小程序
icebreaker2 小时前
重走 Vue 长征路 Weapp-vite:编译链路与 Wevu 运行时原理拆解
前端·vue.js·微信小程序
wuhen_n2 小时前
代码生成:从AST到render函数
前端·javascript·vue.js
喝咖啡的女孩2 小时前
浏览器前端指南
前端
wuhen_n2 小时前
AST转换:静态提升与补丁标志
前端·javascript·vue.js