后盾传过来的是一个列表数据,列表的数据排序可能是乱的,根父集ID为0,但也有可能轻易删了其中一个,导致本条数据父集id基本追溯不到0,临时就这样写,或者有更好的办法!

export const create = function (config) {    /**     * 革除掉追溯不到父集ID是0的数据     * @param list      */    this.clearNopid = function (list) {        const ids = [];        const arr = [];        for (let i = 0; i < list.length; i++) {            let item = list[i];            let flag = this.hasParents(list, item, ids);            if (flag) {                ids.push(item.id);                let obj={};                for(let key in config.props){                    obj[key]=item[config.props[key]];                }                arr.push(obj);            } else {                list.splice(i, 1);                i--;            }        }        return this.createTree(arr, []);    }    /**      * 判断根菜单是否是0    */    this.hasParents = function (list, node, ids) {        let flag = false;        if (node.pid === 0 || ids.indexOf(node.id) !== -1) {            flag = true;        } else {            for (let i = 0; i < list.length; i++) {                let item = list[i];                if (item.id === node.pid) {                    flag = this.hasParents(list, item, ids);                }            }        }        return flag;    }    /**     * 结构树菜单     * @param list      */    this.createTree = function (list, data) {        for (let i = 0; i < list.length; i++) {            let item = list[i];            //判断是否根目录            if (item.pid == 0) {                data.push(item);                list.splice(i, 1);                i--;            } else {                let flag = this.findChild(data, item);                if (flag) {                    list.splice(i, 1);                    i--;                }            }        }        if (list.length > 0) {            data = this.createTree(list, data);        }        return data;    }    /**     * 查找父集ID     * @param list      * @param node      */    this.findChild = function (list, node) {        let flag = false;        for (let i = 0; i < list.length; i++) {            let item = list[i];            if (item.id === node.pid) {                item.children = item.children || [];                item.children.push(node);                flag = true;                break;            } else {                if (item.children) {                    flag = this.findChild(item.children, node);                    if (flag) {                        break;                    }                }            }        }        return flag;    }    //调用    const data = this.clearNopid(config.list);    return data;};//调用形式const config = {        list: [],        props: {          id: 'id', //必须          pid: 'pid', //必须          name: 'menuName', //可选项,名字能够改          menuState: 'menuState' //可选项,名字能够改        }      }      this.menuNodes = createdTree.create(config);