JSFiddle - React, Tailwind, and code Playground
JavaScript
function flatObject(value) {
const processed = [];
return isObject(value) ? run(value, "") : value;
function isObject(value) {
return typeof value == 'object' && !!value
}
function run(value, key) {
if (!isObject(value)) {
return { [key]: value };
}
if (processed.includes(value)) {
return { [key]: null };
}
processed.push(value);
const prefix = key && key + ".";
let o = {};
for (const [key, val] of Object.entries(value)) {
o = { ...o, ...run(val, prefix + key) };
}
return o;
}
}
console.log(flatObject(window))