2016-11-30 20 views
3

クエストオブジェクトの配列を含むこのオブジェクトを反復しようとしています。どのように私は各キーの値のペアを反復することができる、例えば、ステータスが "完了"のすべてのクエストを返します。入れ子にされたオブジェクトの配列を反復する

{ 
    "quests": [ 
     { 
      "title": "A Rum Deal", 
      "status": "COMPLETED", 
      "difficulty": 2, 
      "members": true, 
      "questPoints": 2, 
      "userEligible": true 
     } 
    ], 
    "loggedIn": false 
} 
+0

反復処理を使用するか、返すことができますか? –

+0

私はあなたが "各キー値のペアを繰り返し"したいとは思わない。配列内の**要素**を反復処理したいとします。キー/値のペアはオブジェクトの特徴です。要素は配列の特徴です。ところで、「フィルタ」という単語がわからなくても、「一致するオブジェクト配列のjavascriptプロパティを見つける」というGoogleの検索ですぐに回答が得られるはずです。 –

答えて

2

あなたが完了したタスクを選択を返すためArray#forEach

object.quests.forEach(function (a) { 
    if (a.status === "COMPLETED") { 
     // do something with the data 
    } 
}); 

を使用することができます反復のために、あなたはArray#filter

var completed = object.quests.filter(function (a) { 
    return a.status === "COMPLETED"; 
}); 
1

使用Array.prototype.filterは、ステータスを '完了' を持つ要素をフィルタリングする - デモ下記参照:

var array={"quests":[{"title":"A Rum Deal","status":"COMPLETED","difficulty":2,"members":0,"questPoints":2,"userEligible":0},{"title":"A Rum Deal","status":"NOT_COMPLETED","difficulty":2,"members":0,"questPoints":2,"userEligible":0}],"loggedIn":1}; 
 

 
var result = array.quests.filter(function(e){ 
 
    return e.status && e.status === "COMPLETED"; 
 
}); 
 

 
console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}
JavaScript filtersがあるため何

+0

'e.status &&'部分のポイントは何ですか? –

+0

'status'が' e'のプロパティであるかどうか確認してください。 – kukkuz

+1

それは必要ではありません。 'status'が' e'のプロパティでない場合、 'e.status'は未定義です。これは' 'COMPLETED" 'と同じではありません。 –

1

myObj.quests.filter(item => item.status === 'COMPLETED'); 
関連する問題