【发布时间】:2018-12-02 07:40:29
【问题描述】:
我有以下 Json 文件,我正在尝试遍历所有内容,但是只有嵌套数组中的一项显示。不知道我在这里做错了什么。
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);
});
期望的输出:
<ul>
<li>red<li>
<li>blue
<div>green </div>
<div>yellow </div>
<div>pink</div>
</li>
</ul>
【问题讨论】:
-
for( var i in response.data.items ){- 不要在数组上使用for..in,使用常规的for循环 -for..in用于迭代对象的属性。 -
或者使用新的
for ... of。 -
您要寻找的结果是什么?
-
刚刚更新了想要的结果
-
@user992731 - 请尝试我的建议 - 常规的
for循环将解决您的问题
标签: javascript json loops multidimensional-array