要素ツリーのデータを再帰的に処理する; リテラル関数の使用法を参照

 // Class列表转为树
          list2tree() {
    
    
            const list = cloneDeep(this.classList);
            var getChildren = (arr, nameArr) => {
    
    
                let result = [];
                for (let item of arr) {
    
    
                    if (nameArr.indexOf(item['@id']) !== -1) {
    
    
                        let roles = [];

                        Array.isArray(item.selfRoles) && (roles = [].concat(item.selfRoles));
                        Array.isArray(item.parentRoles) && item.parentRoles.forEach(item => {
    
    
                            if (roles.indexOf(item) === -1) {
    
    
                                roles.push(item);
                            }
                        });

                        let curClass = {
    
    
                            id: item.id,
                            atId: item['@id'],
                            name: item.label['zh-cn'],
                            parent: Array.isArray(item.subClassOf) ? item.subClassOf[0] : null,
                            children: (Array.isArray(item.supClassOf) && (item.supClassOf.length > 0)) ? getChildren(arr, item.supClassOf) : [],
                            isEncryption: item.isEncryption || 0,
                            selfRoles: item.selfRoles,
                            parentRoles: item.parentRoles,
                            roles: roles.sort()
                        };
                        result.push(curClass);
                    }
                }
                return result;
            }
            

            this.classTree = getChildren(list, ['bkgs:事物'])[0].children;

おすすめ

転載: blog.csdn.net/zhangyubababa/article/details/131877847