// 数据扁平化 export function treeToFlat(data: any[], Id = 'Id', key = 'ParentId', children = 'Children') { // const result = data.reduce(function fn(prev: {}[], curr: { [x: string]: any; }) { let obj = {}; for (var c in curr) { if (c !== children) Object.assign(obj, { [c]: curr[c] }); } prev.push(obj); curr[children] && curr[children].forEach((v: { [x: string]: any; }) => { v[key] = curr['Id'] || curr[Id]; fn(prev, v); }); return prev; }, []); return result; } // 数据反扁平化 export function flatToTree(data: any[], key = 'ParentId', children = 'Children') { const result = data.reduce(function (prev, curr, i, arr) { curr[children] = arr.filter((v) => v[key] === curr['Id']) curr[children] = curr[children].length ? curr[children] : undefined; if (!curr[key]) { prev.push(curr); } return prev; }, []); return result; }