JSFiddle - React, Tailwind, and code Playground
by brigand
JavaScript
const isObject = (value) => value != null && typeof value === 'object';
const traverse = (rootObject) => {
const result = [];
const inner = (object, path) => {
const keys = isObject(object) ? Object.keys(object) : [];
if (keys.length === 0) {
result.push(path);
} else {
for (const key of keys) {
inner(object[key], path.concat([key]));
}
}
};
inner(rootObject, []);
return result;
};
console.log(
traverse({
shark: {
TEST: {
test: {
meta: {
status: 'regular',
},
'multiple-run': {
meta: {
creator_user: 'gold',
},
},
},
},
},
octopus: {
J212: {
'F291-21': {
meta: {
status: 'regular',
},
'multiple-run': {
meta: {
creator_user: 'gold',
},
},
},
},
},
}),
);