emement 框架中tree数据互转,嵌套结构与扁平互转

由于要使用emement的tree,但是数据格式是固定的,又存在后台给的数据不符合格式,所以需要转换一下数据。

                                        以下数据仅为2种格式示例,不是互相转成的

嵌套结构格式为:

扁平数据格式为:

转换成符合element的 tree嵌套类型的嵌套结构:(调用方法是  this.toTree(this.data))


由于tree的数据可能有需求,要修改完成后点击提交,整体将数据发送给后台,这样又需要嵌套结构转换成扁平结构的:(调用方法是  this.toData(this.data,0))



toTree(data) {

                data.forEach(function (item) {

                    delete item.children;

                });

                var map = {};

                data.forEach(function (item) {

                    map[item.id] = item;

                });

                var val = [];

                data.forEach(function (item) {

                    var parent = map[item.pid];

                    if (parent) {

                        (parent.children || ( parent.children = [] )).push(item);

                    } else {

                        val.push(item);

                    }

                });

                return val;

            },

toData(data, pid){

                var arr = [];

                for (var i = 0; i < data.length; i++) {

                    arr.push({ id: data[i].id, label: data[i].label, pid: pid });

                    if (data[i].children) arr = arr.concat(this.toData(data[i].children, data[i].id));

                }

                return arr;

            },

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容