const obj1 = {
foo: {
bar: {
value: 'final'
}
}
}
const getBreadcrumbs = (data, accumulate = []) => {
Object.keys(data).forEach(key => {
if (typeof data[key] === 'object') {
accumulate.push(key);
return getBreadcrumbs(data[key], accumulate);
} else {
accumulate.push(key);
return accumulate;
}
});
return accumulate;
};
const breadcrumbs = getBreadcrumbs(obj1).join('.');
console.info(breadcrumbs); // 'foo.bar.value'
Работает только если в исходном объекте и каждом узле всего одно свойство
Алгоритм довольно тяжёлый, я думаю, что можно попробовать конвертировать исходный объект в строку и как-то её парсить, но это просто догадка. В продакшен я бы такой код старался не пускать.