构造树

构造树

        /**
         * 构建树结构
         *
         * @return {Array} 树结构[{id:树id,children:[]}]
         */
        buildTree() {
            const CHINA_ID = 998;
            const FOREIGN_ID = 999;
            return [this.buildNode(CHINA_ID), this.buildNode(FOREIGN_ID)];
        },

        // 构建树节点 {id:树id,children:[]}
        buildNode(id) {
            return {id: id, children: this.buildChildren(id)};
        },

        // 构建子树
        buildChildren(childId) {
            let childrenArray = [];
            const FILIATION = regionTools.filiation;// var filiation = {父: [子]};
            let array = FILIATION[childId];
            if (array) {
                for (let child of array) {
                    childrenArray.push(this.buildNode(child));
                }
            }
            return childrenArray;
        }

获取树所有节点

let tree = {
  id: 1,
  children: [
    { id: 2, children: [
      { id: 3 },
      { id: 4 }
    ] },
    { id: 5, children: [{id:9, children:[]}] },
    { id: 6, children: [] },
    { id: 7, children: [] },
    { id: 8, children: [] }
  ]
};
// output: [1, 2, 3, 4, 5, 9, 6, 7, 8]

let expand = (tree = {}) => {
  let { id, children } = tree;
  let output = [];
  output.push(id);
  if (children && children.length) {
    for (let c of children) {
      output = output.concat(expand(c));
    }
  }
  return output;
};

console.log(expand(tree));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值