Skip to content

Instantly share code, notes, and snippets.

@perymimon
Last active October 28, 2023 21:20
Show Gist options
  • Save perymimon/d8b18de956e96fd36aaef4d585313309 to your computer and use it in GitHub Desktop.
Save perymimon/d8b18de956e96fd36aaef4d585313309 to your computer and use it in GitHub Desktop.
flat Object
inport {flatObject} from './example.js'
const obj = {aaa:{bbb:{c:1,d:7}}, bb:{vv:2}}
console.log(flatObject(obj)}
// aaa.bbb.c: 1
// aaa.bbb.d: 7
// aaa.bbb: {c: 1, d: 7}
// aaa: {bbb: {…}}
// bb.vv: 2
// bb: {vv: 2}
export function flatObject(obj) {
const dot = '.';
const flatObject = {};
const path = [];
function dig(obj) {
if (/*is primitive*/ obj !== Object(obj)) return obj;
for (let key in obj) {
path.push(key);
flatObject[path.join(dot)] = dig(obj[key]);
path.pop();
}
}
dig(obj);
return flatObject;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment