2016-11-15 1 views
0

내 객체 :개체를 포함하는 개체를 반복하는 방법은 무엇입니까?

"hockey": { 
    stats: { 
     skaters: { 
      regular: [ 
       {name: "stat1", key: "statkey1"} 
       {name: "stat2", key: "statkey2"} 
       {name: "stat3", key: "statkey3"} 

      ] 
     }, 
     goalies: { 
      regular: [ 
       {name: "stat1", key: "statkey4"} 
       {name: "stat2", key: "statkey5"} 
       {name: "stat3", key: "statkey6"} 
      ] 
     } 
    } 
} 

내 코드 : 나는 sport.stats.position.stat_group 내에있는 각 개체에서 속성 key을 잡기 위해 위의 코드를 사용하려고 해요

var stats = []; 
var key = ""; 
for (position in sport.stats) { 
    for (stat_group in position) { 
     for (stat in stat_group) { 
      key = stat.key; 
      stats[key] = true; 
     } 
    } 
} 

. 각 스포츠는 위치와 통계 그룹의 수가 다르므로 트리플 루프를 사용합니다. 어떤 콘솔 오류도 발생하지 않고 키를 잡아 내지 못하고 iterator 변수는 객체가 아닌 정수로만 평가됩니다.

는 여기에 내가 결과 stats 객체가되고 싶은 내용은 다음과 같습니다

{ 
    "statkey1": true, 
    "statkey2": true, 
    "statkey3": true, 
    ... 
} 

너희들이 도와 수 있기를 바랍니다! 감사!

+0

:

당신의 논리에 따르면, 이것은 당신이해야 할 의미가 무엇인가 /en/docs/Web/JavaScript/Reference/Statements/for...in). 또한 '스포츠'가 정의되지 않았기 때문에'stats' 만'sport.stats'와 관련이 없습니다. 나는 "객체를 포함하는 배열을 반복하는 법"이 12 번 이상 요구되었다고 확신한다. – ASDFGerte

+0

참조 : [여기] (http://stackoverflow.com/questions/16626735/how-to-loop-through-an-array-containing-objects-and-access-their-properties), [여기] (http : //stackoverflow.com/questions/6565281/iterating-over-array-of-objects-javascript-odd-behaviour), [here] (http://stackoverflow.com/questions/19529403/javascript-loop-through- object-array)와 무수한 다른 것들. – ASDFGerte

답변

0

당신에게 개체의 키가 아닌 값을 제공합니다. 이가 ... 작동 in` (https://developer.mozilla.org을 [문서]를 참조하는 방법`아니다

var stats = {}; 
var key = ""; 
for (position in sport.stats) { 
    for (stat_group in sport.stats[position]) { 
     for (stat in sport.stats[position][stat_group]) { 
      key = sport.stats[position][stat_group][stat].key; 
      stats[key] = true; 
     } 
    } 
} 
+0

감사! 이 문제가 해결되었습니다. – adunn

+0

@adunn, 내 대답을 선택 취소 한 이유는 무엇입니까? –

+0

아니요! 미안하다 사고 였어! – adunn

0

JS for...in 루프는 값이 아닌 키를 반복합니다. 완전히 객체를 반복하려면 다음과 같이 수행 할 수 있습니다 : 자바 스크립트에 대한 더 ...

for (key in sports.stats) { 
    var position = sports.stats[key]; 
    for (group_key in position) { 
    var stat_group = position[group_key]; 
    for (stat_key in stat_group) { 
     stat_group[stat_key] = true; 
    } 
    } 
} 
관련 문제