算法

    var list =[
        {
            name: '貴州',
            id: '01',
            parent: 0
        },
        {
            name: '白云',
            id: '010101',
            parent: '0101'
        },
        {
            name: '遵義',
            id: '0102',
            parent: '01'
        },

        {
              name: '貴陽(yáng)',
              id: '0101',
              parent: '01'
          },
      ];

        var result = getTrees(list, 0);

        function getTrees(list, parentId) {
            let items = {};
            // 獲取每個(gè)節(jié)點(diǎn)的直屬子節(jié)點(diǎn),*記住是直屬,不是所有子節(jié)點(diǎn)
            for (let i = 0; i < list.length; i++) {
                let key = list[i].parent;
                if (items[key]) {
                    items[key].push(list[i]);
                } else {
                    items[key] = [];
                    items[key].push(list[i]);
                }
            }
            return formatTree(items, parentId);
        }

        function formatTree(items, parentId) {
            let result = [];
            if (!items[parentId]) {
                return result;
            }
            for (let t of items[parentId]) {
                t.children = formatTree(items, t.id)
                result.push(t);

                if (!t.children.length) {
                    delete t.children;
                }
            }
            
            return result;
        }

        console.log(result);
var list =[
      {
          name: '貴州',
          id: '01',
          parent: 0
      },
      {
          name: '白云',
          id: '010101',
          parent: '0101'
      },
      {
          name: '遵義',
          id: '0102',
          parent: '01'
      },

      {
            name: '貴陽(yáng)',
            id: '0101',
            parent: '01'
        },
    ];

    function tree(list) {
        var map = {};
        list.forEach((v, i) => {
            map[v.id] = v;
        });

        var result = [];
        list.forEach(function (v, i) {
            var parent = map[v.parent];

            if(parent) {
              (parent.children || (parent.children = [])).push(v);
            } else {
                result.push(v);
            }
        });

        return result;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容