2016-11-30 2 views
3

퀘스트 객체 배열을 포함하는이 객체를 반복하려고합니다. 어떻게하면 각 키 값 쌍을 반복하여 "완료 됨"상태의 모든 퀘스트를 반환 할 수 있습니까?중첩 된 객체 배열을 반복합니다.

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

으로 반복을 사용하거나 반환 할 수 있을까? –

+0

"각 키 값 쌍을 반복"하고 싶지 않습니다. 배열의 ** 요소 **를 반복하려고합니다. 키/값 쌍은 객체의 기능입니다. 요소는 배열의 기능입니다. 그런데 "필터"라는 단어를 모르더라도 'find matching object array javascript property'를 검색하면 즉시 답변을 얻을 수 있습니다. –

답변

2

, 당신은 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

. 당신이 완료 작업과 선택을 반환 들어 Array#forEach

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

를 사용할 수 반복 들어

myObj.quests.filter(item => item.status === 'COMPLETED'); 
관련 문제