30 lines
941 B
TypeScript
30 lines
941 B
TypeScript
export const toFlatObject = (objectArg: object) => {
|
|
const returnObject: { [key: string]: any } = {};
|
|
const extractLayer = (
|
|
subObject: { [key: string]: any },
|
|
pathArg: string,
|
|
loopProtection: object[]
|
|
) => {
|
|
if (loopProtection.indexOf(subObject) > -1) {
|
|
return;
|
|
}
|
|
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;
|
|
};
|