Как получить свойство вложенного объекта в переборе циклом файла json?
Есть json объект:
{
"Theme" : {
"White": {
"color" : "#FFFFFF",
"label" : "#000000"
},
"Black": {
"color" : "#000000",
"label" : "#FFFFFF"
}
}
}
Мне нужно в цикле получить свойство вложенного объекта (использую ejs для шаблонизации).
<% for (var theme in colors["Theme"]) { %>
<div class="blocks-container__item">
<div class="color-block">
<div class="color-block__inner" style="background-color: <%= theme["color"] %>; color: <%= theme["label"] %>;">
<span class="color-block__name"><%= theme %></span>
<span class="color-block__hex"><%= theme["color"] %></span>
</div>
</div>
</div>
<% } %>
Такой код у меня не работает. Как добраться до вложенных свойств?
Ответы (1 шт):
Автор решения: Greg--
→ Ссылка
Как то вот так можно сделать:
let colors = {
"Theme" : {
"White": {
"color" : "#FFFFFF",
"label" : "#000000"
},
"Black": {
"color" : "#000000",
"label" : "#FFFFFF"
}
}
}
for(let a in colors.Theme){
console.log(colors.Theme[a].color)
}
Т.е. код должен быть что то на подобии
<% for (var theme in colors.Theme) { %>
<div class="blocks-container__item">
<div class="color-block">
<div class="color-block__inner" style="background-color: <%= theme["color"] %>; color: <%= theme["label"] %>;">
<span class="color-block__name"><%= theme %></span>
<span class="color-block__hex"><%= colors.Theme[theme].color %></span>
</div>
</div>
</div>
<% } %>
Но есть такое чувство что "Theme" должен быть массивом а не объектом:
let colors = {
"Theme" : [
{"White": {
"color" : "#FFFFFF",
"label" : "#000000"
}
},
{"Black": {
"color" : "#000000",
"label" : "#FFFFFF"
}
}
]
}
colors.Theme.forEach((e,i)=>{
for(let c in e){
console.log(e[c].color)
}
})