2012-04-05 5 views
0

가능한 중복 :
Pick random property from a Javascript objectjavascript 객체에서 하나의 속성 이름을 얻으려면 어떻게해야합니까?

내가 자바 스크립트 객체가 있다고 가정 :

Config.UI.Area = { 
     "uuid": { 
      "_type": "string" 
     }, 
     "frame": { 
      "_type": "rect" 
     }, 
     "zIndex": { 
      "_type": "string" 
     } 
} 

그때 나는 "UUID"와 같은 속성의 이름을 각각 얻을 원하는을 " 프레임 ","zIndex " for 루프를 사용하여 :

var prop=config.ui.area; 
var arr=new Array() 
for(var i in prop){ 
    //do something with prop[i]? 
    //arr.push(prop[i].....)? 
} 

저는 prop [i]를 직접 사용할 수 없습니다. 객체를 반환 하겠지만 어떻게 이름을 얻을 수 있습니까?

for(var name in prop){ 
    //do something with prop[name]? 
    arr.push(name); 
} 

그것은 또한 당신에게 개체 개체의 '기본'속성의 이름을 줄 것이다 :

+0

dup : http://stackoverflow.com/questions/3068534/getting-javascript-object-key-list – Alexander

답변

4

이름 당신에게 재산의 배열을 줄 것이다. 객체 (하지의 배열을 당신이 재산을 반복하고 값을

var prop=config.ui.area; 
var arr=new Array() 
for(var i in prop){ 
    //do something with prop[i]? 
    var propertyName = i; 
    var propertyValue = prop[i]; 
} 
1

가되어이를 방지하기 위해, hasOwnProperty 방법을 사용 개체). 그래서 당신은 소품을 할 수 없습니다.

이 시도

,

var obj = { 
      "uuid": { 
       "_type": "string" 
      }, 
      "frame": { 
       "_type": "rect" 
      }, 
      "zIndex": { 
       "_type": "string" 
      } 
    } 

    var prop = obj; 
    var arr=[]; 
    for(var i in prop){ 
     if(i.hasOwnProperty){ 
     arr.push(i); 
     } 
    } 
    console.log(arr); 
0

소품을 해당 얻을 수 (및 Config.UI.Area) 방법

다음
for(var name in prop){ 
    if (prop.hasOwnPropery(name) { 
    arr.push(name); 
    } 
} 
0

는 루프 사용 객체의 속성의 이름에 도착하려면,

for(var propertyName in myObject) { 
    if(myObject.hasOwnProperty(propertyName) { 
    console.log(propertyName); // will be uuid, frame or zIndex 
    } 
} 

이 서브 객체의 속성에 도착하는 데 사용하는

for(var propertyName in myObject) { 
    if(myObject.hasOwnProperty(propertyName) { 
    var subObject = myObject[propertyName]; 
    console.log(subObject._type); 
      // will string or rect based on your sample code 
    } 
} 

hasOwnProperty을 객체를 반복하여 사용하면 객체의 속성을 필터링 할 수 있으므로 좋은 생각입니다. 요법은 prototype을 통해 상속됩니다.

관련 문제