树结构的数据扁平化

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年前端老司机10 分钟前
React 受控组件和非受控组件区别和使用场景
前端·javascript·react.js
夏晚星10 分钟前
vue实现微信聊天emoji表情
前端·javascript
停止重构12 分钟前
【方案】前端UI布局的绝技,响应式布局,多端适配
前端·网页布局·响应式布局·grid布局·网页适配多端
極光未晚13 分钟前
TypeScript在前端项目中的那些事儿:不止于类型的守护者
前端·javascript·typescript
ze_juejin14 分钟前
Vue3 + Vite + Ant Design Vue + Axios + Pinia 脚手架搭建
前端·vue.js
lichenyang45315 分钟前
React项目(移动app)
前端
用户618482402195117 分钟前
Vue-library-start,一个基于Vite的vue组件库开发模板
前端
美团技术团队28 分钟前
报名 | 美团技术沙龙第86期:多业务场景下,美团如何做性能优化
前端
Rrvive1 小时前
localhost 和 127.0.0.1 的核心区别
前端
蓝倾1 小时前
如何使用Python通过API接口批量抓取小红书笔记评论?
前端·后端·api