UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

46 lines (43 loc) 1.41 kB
import { a as __spreadArray } from '../tslib.es6-096fffdd.js'; function flattenUsingComponentMap(rawMap) { var res = {}; function cursive(componentsMap, components, fathers) { if (componentsMap === void 0) { componentsMap = {}; } if (components === void 0) { components = []; } var keys = Object.keys(componentsMap); for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; if (fathers.includes(key)) { // 防止递归调用,即防止子孙和祖先相同 continue; } var subComponentsMap = rawMap[key]; if (subComponentsMap) { var innerKeys = Object.keys(subComponentsMap); innerKeys.forEach(function (innerKey) { if (!fathers.includes(innerKey)) { // 防止递归调用 components.push(innerKey); } }); cursive(subComponentsMap, components, __spreadArray(__spreadArray([], fathers, true), [key], false)); } } } Object.keys(rawMap).map(function (key) { var components = []; var componentsMap = rawMap[key]; if (componentsMap) { components.push.apply(components, Object.keys(componentsMap)); components = Array.from(new Set(components)); } cursive(componentsMap, components, [key]); res[key] = components; }); return res; } export { flattenUsingComponentMap };