提交 f3d4d014 authored 作者: 姚鑫国's avatar 姚鑫国

优化 getColumnsMaxLevel 函数

上级 9d256612
...@@ -157,8 +157,7 @@ export function getColumns(columns) { ...@@ -157,8 +157,7 @@ export function getColumns(columns) {
v: '序号', v: '序号',
s: 'header', s: 'header',
}; };
let columnsHeight = 0; let columnsHeight = getColumnsMaxLevel(columns); //递归行数
getColumnsMaxLevel(columns); //递归行数
let columnsKey = []; let columnsKey = [];
const columnsList = new Array(columnsHeight).fill([]); const columnsList = new Array(columnsHeight).fill([]);
let col = 1; let col = 1;
...@@ -192,29 +191,32 @@ export function getColumns(columns) { ...@@ -192,29 +191,32 @@ export function getColumns(columns) {
} }
return res; return res;
} catch (e) { } catch (e) {
debugger;
console.table("getColumnsData",e); console.table("getColumnsData",e);
return false; return false;
} }
} }
//递归行数 //递归行数
function getColumnsMaxLevel(data = [], level = 1) { function getColumnsMaxLevel(arr = [] ) {
for (let item of data) { //递归计算树形数据最大的层级数
let isLast = !item.children; let maxLevel = 0;
if (!isLast && Array.isArray(item.children)) { (function multiArr(arr, level=0) {
let x = level + 1; ++level;
if (columnsHeight < x) { maxLevel = Math.max(level, maxLevel);
columnsHeight = x; for (let i = 0; i < arr.length; i++) {
} let item = arr[i];
getColumnsMaxLevel(item.children, x); item.level = level;
if (item.children && item.children.length > 0) {
multiArr(item.children, level);
} else { } else {
columnsHeight += 1; delete item.children;
} }
} }
return level; })(arr, 0);
return maxLevel;
} }
//递归当前数据宽度 //递归当前数据宽度
function getColumnsWidth(data = [], sum = 0) { function getColumnsWidth(data = [], sum = 0) {
for (let item of data) { for (let item of data) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论