2

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つの配列(最初の例のように)または複数の配列(2番目の例のように)があるかどうかを判断する方法、およびすべてのアイテムをループできるように関数を拡張する方法に関するアドバイス/ガイダンスはありますか? 1つのアレイがあるのか​​複数のアレイがあるのか​​?

4

1 に答える 1

4

最初のオブジェクトは配列ですが、2 番目のオブジェクトはそうではありません。

引数が配列であるかどうかをテストするか、単にテストすることもできます

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"}, ... ]
}
于 2012-08-24T11:23:20.273 に答える