我使用php将xml字符串转换为json,然后将其发布到
我尝试迭代它的javascript文件。当对象包含多个对象时,json包含一个对象数组,就像第一个样本一样,我可以使用.length
函数进行迭代,但是当对象只包含一个对象时,就不会创建数组而{{1功能失败。如何在不知道对象名称的情况下使迭代工作?
样本1:
.length
样本2:
{"class":[
{
"name":"history",
"grade":"10"
},
{
"name":"chemistry",
"grade":"8"
}
]
}
答案 0 :(得分:1)
您可以使用for
,但不需要length
var test = {"class":[
{
"name":"history",
"grade":"10"
},
{
"name":"chemistry",
"grade":"8"
}
]
}
for (var i in test){
console.log(test[i]);
}
答案 1 :(得分:1)
您可以查看length
,如果它undefined
,这意味着它只是一个对象,那么您只需要一个元素就可以创建一个数组:
if collection.length == undefined:
collection = [collection]
# the rest of the code doesn't need to be changed
答案 2 :(得分:1)
您可以先检查对象是否为数组:Array.isArray(obj)
。如果它不是,那么你知道你不需要迭代它。
var obj = {"class":[
{
"name":"history",
"grade":"10"
},
{
"name":"chemistry",
"grade":"8"
}
]
}
if (!Array.isArray(obj)) return obj;
// else iterate it.
答案 3 :(得分:1)
在知道如何正确使用.length
之前,您必须知道变量的数据类型。
var dataTypeLength;
var data = {
"class":
{
"name":"history",
"grade":"10"
}
}
if (Array.isArray(data.class)) {
dataTypeLength = data.class.length;
} else {
dataTypeLength = Object.keys(data.class).length;
}
console.log(dataTypeLength);