树结构的数据扁平化

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));

打印结果:

相关推荐
fruge1 小时前
Vue Pinia 状态管理实战指南
前端·vue.js·ubuntu
sean2 小时前
开发一个自己的 claude code
前端·后端·ai编程
用户21411832636022 小时前
dify案例分享-用 Dify 一键生成教学动画 HTML!AI 助力,3 分钟搞定专业级课件
前端
太过平凡的小蚂蚁4 小时前
Kotlin 协程中常见的异步返回与控制方式(速览)
开发语言·前端·kotlin
咖啡の猫5 小时前
Vue初始化脚手架
前端·javascript·vue.js
晨枫阳5 小时前
uniapp兼容问题处理总结
前端·vue.js·uni-app
liusheng6 小时前
腾讯地图 SDK 接入到 uniapp 的多端解决方案
前端·uni-app
拉不动的猪6 小时前
如何处理管理系统中(Vue PC + uni-app 移动端):业务逻辑复用基本方案
前端·javascript·架构
边洛洛6 小时前
next.js项目部署流程
开发语言·前端·javascript
Zsnoin能6 小时前
浏览器连接 新北洋BTP-P33/P32蓝牙打印机,打印 二维码
前端