@grom111

Как создать «дерево» с элементов объэкта?

Привет всем!
Подскажите как можна отрендерить элементы объекта?
Например, есть объект :
var data= {
    perData: {
        name: 'Andrey',
        county: {
            borough : 'Moskow'
        }
    },
 friends: ["Max", "Dmitriy"]
};


в консоль должно выводится что-то по типу
data
  -perData
    ----name: Andrey
    ----country: 
           ------borough: Moskow
  -friends


Планировал делать так:
function builtTree(obj) {
    let separator = " - ",
        count = 0,
        prop = Object.keys(obj).forEach(el => {
            if (typeof obj[el] === "object") {
                build(el);
                for (let key in obj[el]) {
                    if (obj[el].hasOwnProperty(key)) {
                        count++;
                        build(key);
                    }
                }
            }
        });

    function build(obj) {
        console.log(separator.repeat(count) + obj);
    }
}

, но у меня получается как-то много if'ов и в общем запутано очень. Возможно подскажите как лучше это сделать?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
А что вам мешает использовать встроенную функцию JSON.stringify? https://jsfiddle.net/3uwjehnu/

UPD: Набросал рекурсивный алгоритм, который вам нужен https://jsfiddle.net/rockon404/h41mw5t5/
Ответ написан
Stalker_RED
@Stalker_RED
Форматирование есть готовое, в JSON.stringify
console.log(
  JSON.stringify(data, null, "\t")
)
https://jsfiddle.net/dycfxk3n/

результат:
Dqr9DYd.png

Если вам не нужен JSON на выходе, и обязательно нужно избавиться от скобочек - есть replace()
console.log(
  JSON.stringify(data, null, "\t")
   .replace(/[\"\{\}]/g, '')
)
https://jsfiddle.net/dycfxk3n/1

результат:
TOp06S6.png

Если обязательно нужно вывести дефисы перед текстом, опишите по какой логике они у вас выводятся, а то в примере то один, то четыре, то шесть
...нипанятна.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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