javascript - 无论 JSON 对象是否有多个数组,都循环遍历 JSON 项

标签 javascript arrays json

我有一个函数的工作版本,用于循环遍历 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/

相关文章:

javascript - 更新 Meteor 中的嵌套数组

C++ 初始化全局数组

java - 尝试获取字符串是否有作者、标题、出版商等

javascript - 如何解析json输入数据

javascript - (ReactJs) 如何在另一个组件中包含多个组件?

谷歌 GeoChart 的 Javascript onClick 函数

javascript - 页面闲置 3 分钟后显示警告

javascript - 错误 解析错误 : Unexpected token, 预期 ","

javascript - 使用另一个数组的对象键过滤一个对象

java - 如何根据 Avro 模式验证 JSON