0

重複の可能性:
Javascript オブジェクトからランダムなプロパティを選択する

JavaScript オブジェクトがあるとします。

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

次に、for ループを使用して、「uuid」、「frame」、「zIndex」などの各プロパティの名前を取得します。

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] を直接使用することはできません。オブジェクトが返されます。どうすればその名前を取得できますか?

4

4 に答える 4

5

これにより、プロパティ名の配列が得られます。

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);
    }
}
于 2012-04-05T06:18:41.453 に答える
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];
}
于 2012-04-05T06:22:36.543 に答える
0

prop(および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);
于 2012-04-05T06:26:13.023 に答える
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

于 2012-04-05T06:55:52.847 に答える