Código de referencia. Hay un problema con el valor devuelto como removeKey, siempre obtiene un valor nulo.
const clearEmpties = (obj: IParms) => { var removeKey: string[] = [] for (var key in obj) { if (!obj[key] || typeof obj[key] !== "object") { continue } clearEmpties(obj[key]); if (Object.keys(obj[key]).length === 0) { removeKey.push(key) console.log("k", key, obj[key]); delete obj[key]; } } return {obj , removeKey}; }La entrada para el fragmento de código es:
{"a" :{ "m": { "m1": "cmp", "m2": "M2M", "m3": "2" } "p":{} } }La salida debe ser: 2 valores, devolver un objeto eliminando todos los objetos vacíos y enumerar la ruta eliminada.
{"a" :{ "m": { "m1": "cmp", "m2": "M2M", "m3": "2" } } }& removeKey = ap