@flafy4

Как превратить объект со вложенностью в строку?

У нас есть есть объект:
const obj1 = {
            foo: {
                bar: {
                    value: 'final'
                }
            }
        }


помогите описать функцию которая вернет мне его "хлебные крошки", такого вида: 'foo.bar.value'.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 2
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
const obj1 = {
  foo: {
      bar: {
          value: 'final'
      }
  }
};

function getDeepKeys(obj) {
  let keys = [];

  for(const key in obj) {
    keys.push(key);
  
    if(typeof obj[key] === "object") {
      const subkeys = getDeepKeys(obj[key]);
    
      keys = keys.concat(subkeys.map(subkey => `${key}.${subkey}`));
    }
  }

  return keys;
}

console.log(getDeepKeys(obj1)); // ["foo", "foo.bar", "foo.bar.value"]

Что делать с результатом - сообразите уже сами
Ответ написан
Krasnodar_etc
@Krasnodar_etc
fundraiseup
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'


Работает только если в исходном объекте и каждом узле всего одно свойство

Алгоритм довольно тяжёлый, я думаю, что можно попробовать конвертировать исходный объект в строку и как-то её парсить, но это просто догадка. В продакшен я бы такой код старался не пускать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
console.log(obj1['foo']['bar']['value'])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы