t-comm
Version:
专业、稳定、纯粹的工具库
46 lines (43 loc) • 1.41 kB
JavaScript
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 };