2012-04-05 8 views
0

可能性の重複:その後、私は「、 "UUID" のように、プロパティ名のそれぞれを取得したいjavascriptオブジェクトでプロパティ名を1つ取得するにはどうすればよいですか?

​​


Pick random property from a Javascript object

私はjavascriptオブジェクトがあるとしframe "、" 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]を使うことはできません。それは私にオブジェクトを返します。どうすればその名前を取得できますか?これはあなたにプロパティの配列を与えるだろう

+0

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

答えて

4

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

をそれはまた、あなたObjectオブジェクトの「ネイティブ」プロパティの名前を与えるだろう。それを避けるために、hasOwnPropertyメソッドを使用します。以下は

for(var name in prop){ 
    if (prop.hasOwnPropery(name) { 
    arr.push(name); 
    } 
} 
1

すると、プロパティを反復処理する方法であると

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]; 
} 
0

小道具(およびConfig.UI.Area)がオブジェクト(ないの配列で対応する値を取得しますオブジェクト)。 あなたはprop [i]をすることはできません。

ループ使用中のオブジェクトのプロパティの名前を取得するには

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

、これを試してみてください:

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 
    } 
} 
を使用して、サブオブジェクトのプロパティを取得するには

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

hasOwnPropertyをオブジェクトにループで使用することは、オブジェクトのプロパティをフィルタリングするための良い考えですそれらはprototypeを介して継承されます。

関連する問題