2015-01-28 2 views
1

루프를 통해 전달하려는 json 개체가 있습니다. 그러나 각 객체에는 고유 한 값으로 인해 점 표기법을 통해 액세스 할 수없는 중첩 객체가 있습니다.고유 키를 루핑

enter image description here

.__proto__ 

나에게 일관된 결과를 줄 것이다; 그러나 "-Jg"로 시작하는 값을 빼내고 싶습니다. 정규식 또는 다른 방법을 통해이 작업을 수행 할 수 있습니까?

편집 :

내가이 현재 반환 각도

var lognew = []; 

angular.forEach(log, function(value, key) {  
if(value){ 
    if(value.substr(0,3) !== "-Jg"){  
    this.push(value); 
    } 
    } 
}, lognew); 

console.log(lognew); 

으로 '자바 스크립트 객체를 통해 반복 해요 :

TypeError: undefined is not a function 
+1

당신은 자바 스크립트 객체가 아닌 JSON을보고 한 것으로 나타났습니다. –

+0

@MattBurland - 왜 지요? '{ "1": { "a"가 "B" } "2": { "C"를 "D" } }이 '뷰의 직렬화 점에서 드물지 유효하지 않다 . –

+0

나는 이것이 [단일 속성 객체의 값을 얻는 가장 짧은 방법인가?] (http://stackoverflow.com/q/13041009/218196)를 찾고 있다고 생각합니다. –

답변

4

그냥 for in를 사용하여 열거하고 3 처음 봐 객체 키의 문자

for(var key in jsonObj){ 
if(key.substr(0,3) !== "-Jg") continue; 
var nestedObject = jsonObj[key]; 
} 

각도 편집

var log = { "1": { "-Jga": "b" }, "2": { "-Jgc": "d" } }; 
 

 
var lognew = []; 
 

 
angular.forEach(log, function(value, key) {  
 
if(key){ 
 
    if(key.substr(0,3) !== "-Jg"){  
 
    this.push(value); 
 
    } 
 
} 
 
}, lognew); 
 

 
console.log(lognew);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

+1

위생을 추가하려면 객체 자체와 관련이없는 속성을 무시하는'if (jsonObj.hasOwnProperty (key))'를 포함하고 싶을 수도 있습니다. 또한 객체 키'var keys = Object '를 얻을 수도 있습니다.keys (jsonObj);를 사용하여 객체를 반복합니다. – lemieuxster

+0

@lemieuxster - 예,'hasOwnProperty' (잠재적으로 for for'와 같이)를 포함 할 수 있지만 이미 너무 구체적이어서 객체 프로토 타입이이를 포함하도록 수정 된 것 같지 않습니다. 'keys'를 반복하고 결과에 따라 객체를 반복 할 수는 있지만 약간 더 반복해야합니다. –

+0

현재 TypeError를 반환하고 있습니다. : undefined는 함수가 아니며, 질문에 편집 섹션을 추가했습니다. – byrdr

관련 문제