将tree数据格式转化,整合从带children以及根据数据某个特点递归数据

184 阅读1分钟

const ArrToTrees = (items) => {        for (let i = 0; i < items.length; i++) {          for (let j = 0; j < items.length; j++) {            // parentId为null表示没有父节点  即根节点            if (              items[i].parentId !== null &&              items[i].parentId !== '' &&              items[i].parentId === items[j].systemid            ) {              if (!(items[j].children instanceof Array)) {                // children初始化                items[j].children = [];              }              items[j].children.push(items[i]);            }          }        }        // 返回所有的根节点构成的森林        return items.filter((item) => item.parentId === 'root');      };

上述中的每项items是常见后台返回的带有parentid 以及自身的systemid,若是根元素,则其父元素ID为root。 通过上面的函数整合,即可将此树形数据整合成我们需要的UI控件需要的格式的数据。

若要根据根节点以及其下的所有子节点的对象中包含的某项特性即拥有某个属性统计出当前根节点拥有的这些个数。 如下

 const generateList = (childrenData, data) => {        let subCount = 0;        for (let i = 0; i < childrenData.length; i++) {          const node = childrenData[i];          if (node.children) {            const subChildCount = generateList(node.children, node);            subCount += subChildCount;          } else if (node.docId) {            subCount += 1;
          }        }        if (data) {          // data.cname = `${data.cname}(${subCount})`;          data.docCount = subCount;        }           return subCount;      };
       generateList(resultData);