关上收藏夹发现还有18年未实现的文章,
粗略看了下发现居然还能看懂,
目标是把一个树形构造拍平获取所有的节点。

获取树形构造的所有节点

let tree = {    "id": 1,    "label": "一级 1",    "children": [{        "id": 3,        "label": "二级 2-1",        "children": [{            "id": 4,            "label": "三级 3-1-1"        }, {            "id": 5,            "label": "三级 3-1-2",            "disabled": true        }]    }, {        "id": 2,        "label": "二级 2-2",        "disabled": true,        "children": [{            "id": 6,            "label": "三级 3-2-1"        }, {            "id": 7,            "label": "三级 3-2-2",            "disabled": true        }]    }]}/** * 把树形构造拍平获取所有节点 * @method   getNode * @param    {Object}                node 要拍平构造的树对象 * @return   {Array}                      拍平后的节点数组,不蕴含节点的子节点信息 * @author 朱阳星 * @email  zhuyangxing@foxmail.com * @datetime 2018-04-01T16:42:52+080 */function getNode(node) {    let result = []    let _getNode = function (node) {        let tmp =JSON.parse(JSON.stringify(node))        delete tmp.children        result.push(tmp) //移除拍平数组的子元素,只保留节点相干元素        let child = node.children        if (child != undefined && child.length > 0) {            child.forEach(ele=>{                arguments.callee(ele)            })        }    }    _getNode(node)    _getNode=null    return result}let result = getNode(tree)console.log(result)
// 返回后果如下[  { id: 1, label: '一级 1' },  { id: 3, label: '二级 2-1' },  { id: 4, label: '三级 3-1-1' },  { id: 5, label: '三级 3-1-2', disabled: true },  { id: 2, label: '二级 2-2', disabled: true },  { id: 6, label: '三级 3-2-1' },  { id: 7, label: '三级 3-2-2', disabled: true }]