123456789101112131415161718192021222324252627282930 |
- // 数据扁平化
- export function treeToFlat(data: any[], Id = 'Id', key = 'ParentId', children = 'Children') {
- // <!-- 此处需要使用function,不能使用箭头函数,否则下方的arguments存在异常 -->
- 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;
- }
|