美文网首页
70.树结构

70.树结构

作者: 野茂痒呆 | 来源:发表于2021-02-23 23:27 被阅读0次

昨天写这个的时候头昏脑胀,弄到很晚,最后依然是个半成品,好在结果大致出来了——虽然我都不很清楚怎么出来的。通过了,明天面试。

var industry_list = [

            { parent_ind: '女装', name: '连衣裙' },

            { name: '女装' },

            { parent_ind: '女装', name: '半身裙' },

            { parent_ind: '女装', name: 'A裙' },

            { name: '数码' },

            { parent_ind: '数码', name: '电脑配件', },

            { parent_ind: '电脑配件', name: '内存' },

            { parent_ind: '内存', name: '内存1' },

            { parent_ind: '内存', name: '内存2' },

            { parent_ind: '内存2', name: '内存2-1' },

            { parent_ind: '内存2', name: '内存2-2' }

        ]

        // 时间太晚了,后面一步删除parent_ind和name没做,不过效果已经出来了

        function convert_format(data) {

            let tempObj = {}; // 临时对象

            let treeObj = {}; // 返回值:树对象

            data.forEach((val, idx) => {

                tempObj[val.name] = val;

            })

            const keys = Object.keys(tempObj);

            for(let key of keys){

                if(tempObj[key].parent_ind !== undefined) {                    

                    if(keys.includes(tempObj[key].name)) {

                        tempObj[tempObj[key].parent_ind][tempObj[key].name] = tempObj[[tempObj[key].name]];

                    }

                } else {

                    treeObj[key] = tempObj[key];

                    delete treeObj[key].name;

                }

            }

            delAttr(treeObj);

            return treeObj;

        }

        // for of遍历obj,判断属性是否为对象Object.prototype.toString.call(object) === '[object Object]',

        // 若是删除name和parent_ind属性, 尾递归,继续删除子对象的name parent_ind

        function delAttr(obj) {}

        console.log('treeObj', convert_format(industry_list))

相关文章

网友评论

      本文标题:70.树结构

      本文链接:https://www.haomeiwen.com/subject/jofjfltx.html