我有一个函数的工作版本来遍历JSON对象中的单个数组,例如
[{
"Name": "John",
"Surname": "Johnson"
}, {
"Name": "Peter",
"Surname": "Johnson"
}]
示例功能:
function FindName(NameToFind, data1) {
objData = JSON.parse(data1);
for (var i = 0; i < objData.length; i++) {
var Name = objData[i].Name;
if (Name == NameToFind) {
alert("found!");
}
}
}
现在我需要更改此函数以允许单个OR多个数组,例如
{
"Table1": [{
"Name": "John",
"Surname": "Johnson"
}, {
"Name": "Peter",
"Surname": "Johnson"
}],
"Table2": [{
"Name": "Sarah",
"Surname": "Parker"
},
{
"Name": "Jonah",
"Surname": "Hill"
}
]
}
有没有办法确定对象是否有1个数组(如第一个示例中)或多个数组(如第2个示例中),以及有关如何扩展函数以便能够循环的任何建议/指导所有项目是否有1个数组或多个数组?
答案 0 :(得分:4)
你的第一个对象是一个数组,第二个对象是
。您可以测试您的参数is an array,甚至只测试
if (objData[0]) // that's an array
编辑: 如果你想迭代一个(只是json解码的)对象的所有属性,当它不是一个数组时,你可以这样做:
for (var key in objData) {
var value = objData[key];
// now use the key and the value
// for example key = "Table1"
// and value = [{"Name":"John","Surname":"Johnson"}, ... ]
}