我々はJSONファイルがあります:私たちは次のことを必要とするJSONファイルから子ノードへのトラバースや財産を見つける
var response = {
"Status": "Met",
"Text": "Text1",
"Id": "AAA",
"ContentItems": [
{
"Selected": true,
"Text": "Text2",
"Id": "BBB"
},
{
"Status": "Met",
"Text": "Text3",
"Id": "CCC",
"ContentItems": [
{
"Selected": true,
"Text": "Text5",
"Id": "DDD"
},
{
"Status": "Met",
"Text": "Text6",
"Id": "EEE",
"ContentItems": [
{
"Selected": true,
"Text": "Text7",
"Id": "FFF"
},
{
"Selected": true,
"Text": "Text8",
"Id": "GGG"
},
{
"Status": "Met",
"Text": "Text9",
"Id": "III",
"ContentItems": [
{
"Status": "Met",
"Text": "Text11",
"Id": "JJJ",
"ContentItems": [
{
"Text": "Text12",
"Id": "77"
},
{
"Status": "Met",
"Text": "Text13",
"Id": "10",
"ContentItems": [
{
"Text": "Text14",
"Id": "45"
},
{
"Selected": true,
"Text": "Text15",
"Id": "87"
},
{
"Selected": true,
"Text": "Text16",
"Id": "80"
}
]
}
]
},
{
"Status": "Met",
"Text": "Text17",
"Id": "KKK",
"ContentItems": [
{
"Text": "Text18",
"Id": "12"
},
{
"Status": "NotMet",
"Text": "Text19",
"Id": "14",
"ContentItems": [
{
"Text": "Text20",
"Id": "55"
},
{
"Selected": true,
"Text": "Text21",
"Id": "98"
}
]
}
]
}
]
}
]
}
]
}
]
};
を:
1.Return真のすべての「ステータス」であれば"Met"です。
2.ステータスが「NotMet」の場合はfalseを返します。
子ノードは任意の深さにできます。私は各ノードを横断するために再帰関数を使用し、そこから子ノードをループして関数を再帰的に呼び出しています。
私はこのコードを試しましたが、期待通りに機能しませんでした。
function isStatusMet(response) {
if (response.Status == 'NotMet') {
return false;
} else {
if (response.ContentItems) {
if(Array.isArray(response.ContentItems)) {
for(var i = 0; i < response.ContentItems.length;i++) {
if (response.ContentItems[i].ContentItems) {
return isStatusMet(response.ContentItems[i]);
} else {
if (response.ContentItems[i].Status == 'NotMet') {
return false;
} else {
continue;
}
}
}
return true;
}
}
}
}
[アクセス/プロセス(ネストされた)オブジェクト、アレイまたはJSON]の可能な重複(http://stackoverflow.com/questions/11922383/access-process-nested- objects-arrays-or-json) – Teemu
for-loopの内部から戻ると、そのループの次のすべての介在はスキップされるので、コードは各ノードの最初の子だけをチェックします。 Array.every()はここで非常に便利です。 http://kapilkashyap.github.io/jquery-filter-json-plugin/ は、テキストエリアの中で上記のJSONを貼り付け:あなたはすでにjQueryのを使用している場合 – Shilly
が、これはあなたが望む任意のプロパティのために役に立つかもしれませんデモを行い、プロパティ入力フィールドをプロパティとしてStatusに変更します(大文字と小文字が区別されます)。 [重複を避ける]チェックボックスをオンにして、[JSONフィルタ]ボタンをクリックすると、結果が表示されます。 –