UNPKG

t-comm

Version:

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

50 lines (45 loc) 1.52 kB
'use strict'; 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;