我有一个函数的工作版本,用于循环遍历 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!");
}
}
}
现在我需要更改此函数以允许单个或多个数组,例如
{
"Table1": [{
"Name": "John",
"Surname": "Johnson"
}, {
"Name": "Peter",
"Surname": "Johnson"
}],
"Table2": [{
"Name": "Sarah",
"Surname": "Parker"
},
{
"Name": "Jonah",
"Surname": "Hill"
}
]
}
有没有办法确定对象是否有 1 个数组(如第一个示例)还是多个数组(如第二个示例),以及有关如何扩展函数以能够循环的任何建议/指导所有项目是否有 1 个数组或多个数组?
最佳答案
您的第一个对象是数组,第二个对象不是。
你可以测试一下你的论点 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"}, ... ]
}
关于javascript - 无论 JSON 对象是否有多个数组,都循环遍历 JSON 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108359/