I have the following Json file and I am trying to iterate through everything however only 1 item from the nested array is showing up. Not sure what I am doing wrong here.
JSON:
{
"items":[
{
"label":"red",
"url":"red",
"items":[
]
},
{
"label":"blue",
"url":"#/blue",
"items":[
{
"label":"green",
"url":"#/green"
},
{
"label":"yellow",
"url":"#/yellow"
},
{
"label":"pink",
"url":"#/pink"
}
]
},......
JS:
var d = document,
main = d.getElementsByTagName('nav')[ 0 ],
ul = d.createElement( 'ul' ),
i;
main.appendChild( ul );
axios.get('../data/colors.json')
.then(function (response) {
console.log(response.data.items);
for( var i in response.data.items ){
var li = d.createElement( 'li' );
if(response.data.items[i].items.length){
li.innerHTML = "<a class='meta'>" + response.data.items[i].label + "<div>" + response.data.items[i].items[i].label + "</div>" + "</a>"; // create a new li element
}
else {
li.innerHTML = "<a class='meta'>" + response.data.items[i].label + "</a>"; // create a new li element
}
ul.appendChild( li );// every time append a new item
}
})
.catch(function (error) {
console.log(error);
});
Desired output:
<ul>
<li>red<li>
<li>blue
<div>green </div>
<div>yellow </div>
<div>pink</div>
</li>
</ul>
for( var i in response.data.items ){- don't usefor..inon an array, use a regularforloop -for..inis for iterating the properties of an object.for ... of.forloop will solve your problems