smartobject/ts/tools/toFlatObject.ts
2022-03-08 01:42:39 +01:00

18 lines
802 B
TypeScript

export const toFlatObject = (objectArg: object) => {
const returnObject: {[key: string]: any} = {};
const extractLayer = (subObject: {[key: string]: any}, pathArg: string, loopProtection: object[]) => {
if (subObject)
for (const key of Object.keys(subObject)) {
let localPathArg = pathArg;
if (typeof subObject[ key ] === 'object' && !(subObject[ key ] instanceof Array)) {
const newLoopbackArray = loopProtection.slice();
newLoopbackArray.push(subObject);
extractLayer(subObject[ key ], localPathArg ? localPathArg += `.${key}` : key, newLoopbackArray);
} else {
returnObject[localPathArg ? localPathArg += `.${key}` : key] = subObject[key];
}
}
}
extractLayer(objectArg, '', []);
return returnObject;
}