t-comm
Version:
专业、稳定、纯粹的工具库
50 lines (45 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../tslib.es6-01322ba9.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, tslib_es6.__spreadArray(tslib_es6.__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;
}
exports.flattenUsingComponentMap = flattenUsingComponentMap;