2016-06-22 3 views
1

У меня есть объекты. Они вложены, и я действительно не знаю, какие параметры содержатся в объекте. Например, это может бытьПечать вложенного сложного объекта

{ 
    "option1": "value1", 
    "option2": "value2", 
    "option3": { 
    "suboption1": "subvalue1", 
    "suboption2": { 
     "subsuboption1": "subsubvalue1" 
    } 
    }, 
    "option4": "value4" 
} 

Мне нужно напечатать этот объект как:

<span class="depth-0"><b>option1</b>: value1</span> 
<span class="depth-0"><b>option2</b>: value2</span> 
<span class="depth-0"><b>option3</b>:</span> 
<span class="depth-1"><b>suboption1</b>: subvalue1</span> 
<span class="depth-1"><b>suboption2</b>:</span> 
<span class="depth-2"><b>subsuboption1</b>: subsubvalue1</span> 
<span class="depth-0"><b>option4</b>: value4</span> 

Это выглядит как простая задача, но у меня есть большая проблема с насечками на глубину. Возможно, у кого-то есть аналогичная проблема. Я использую javascript и lodash lib в своем проекте. Мне нужна функция в моем шаблоне.

+0

Вы хотите сделать это с помощью javascript? – Veverke

+0

Да. Мне нужна функция в моем шаблоне. и я использую lodash в моем проекте, если это может помочь. – Anastasiia

+0

Вы пытались что-либо сделать с точки зрения реализации? –

ответ

1

Что об использовании JSON.stringify(), давая space В параметре "--" или вкладку в зависимости от того, как вы хотите:

console.log(JSON.stringify({ 
 
    "option1": "value1","option2": "value2", 
 
    "option3": { 
 
    "suboption1": "subvalue1", 
 
    "suboption2": { 
 
     "subsuboption1": "subsubvalue1" 
 
    } 
 
    }, 
 
    "option4": "value4" 
 
}, null, '--'));

+0

Это хорошая идея, но, помимо обычного отступа, мне нужно использовать некоторые теги html для ключей и значений, и я не уверен, что JSON.stringify позволяет это сделать. – Anastasiia

+0

@Anastasiia Вы можете использовать '.outerHTML', чтобы изменить свой элементы для строки HTML для отображения. –

+0

Я обновил свой вопрос, что теперь вы можете понять, почему я не могу его использовать. – Anastasiia

1

Вы можете попробовать следующие

var object = { 
 
    "option1": "value1", 
 
    "option2": "value2", 
 
    "option3": { 
 
    "suboption1": "subvalue1", 
 
    "suboption2": { 
 
     "subsuboption3": "subsubvalue3" 
 
    } 
 
    }, 
 
    "option4": "value4" 
 
}; 
 

 

 

 

 
function paint(obj, level) { 
 
    for (var key in obj) { 
 
    if (typeof obj[key] === "object") { 
 
     console.log('<span class="depth-"' + level +'><b>'+key + '</b>: </span>'); 
 
     paint(obj[key], level + 1); 
 
    } else { 
 
     console.log('<span class="depth-"' + level + '><b>'+key + '</b>: '+ obj[key]+'</span>'); 
 

 
    } 
 
    } 
 
} 
 

 

 
paint(object, 0);

+0

Я попытался использовать его и понял, что не могу. Я обновляю вопрос, который вы можете понять, почему. – Anastasiia

+0

@ Анастасия - Я обновил ответ. Пожалуйста, проверьте. – nikhil

+0

@ Анастасия - Вы пробовали? Кроме того, вместо console.log вы можете добавить это как html – nikhil

Смежные вопросы