接口响应父子结构的数据,前端重构数据结构为树形结构

/**
 * 组织数据(把后端传递过来的数组数据组合成符合树形菜单的数据结构)
 * @param data:后端数据
 * @returns {Array}:组织好的数据结构
 */
function toTreeData(data) {
    var pos = {};
    var tree = [];
    var i = 0;
    while (data.length != 0) {
        //判定是否是根节点
        if (data[i].pid == 0) {
            tree.push({
                level: data[i].level,
                pid: data[i].pid,
                id: data[i].id,
                title: data[i].title,
                items: []
            });
            pos[data[i].id] = [tree.length - 1];
            data.splice(i, 1);
            i--;
        } else {
            var posArr = pos[data[i].pid];
            if (posArr != undefined) {
                var obj = tree[posArr[0]];
                for (var j = 1; j < posArr.length; j++) {
                    obj = obj.items[posArr[j]];
                }
                obj.items.push({
                    level: data[i].level,
                    pid: data[i].pid,
                    id: data[i].id,
                    title: data[i].title,
                    items: []
                });
                pos[data[i].id] = posArr.concat([obj.items.length - 1]);
                data.splice(i, 1);
                i--;
            }
        }
        i++;
        if (i > data.length - 1) {
            i = 0;
        }
    };
    return tree;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容