【问题标题】:How can I get one property name in a javascript object? [duplicate]如何在 javascript 对象中获取一个属性名称? [复制]
【发布时间】:2012-04-18 21:26:51
【问题描述】:

可能重复:
Pick random property from a Javascript object

假设我有一个 javascript 对象:

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

然后我想获取每个属性的名称,例如“uuid”、“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],它会返回一个对象,我怎样才能得到它的名字?

【问题讨论】:

标签: javascript object properties


【解决方案1】:

这会给你一个属性数组names

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);
    }
}

【讨论】:

    【解决方案2】:

    下面是你如何迭代属性并获取相应的值

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

    【讨论】:

      【解决方案3】:

      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);
      

      【讨论】:

        【解决方案4】:

        要在循环中获取对象属性的名称,请使用:

        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 继承的对象的属性。

        【讨论】:

          猜你喜欢
          • 2018-06-08
          • 1970-01-01
          • 2011-09-08
          • 1970-01-01
          • 2022-08-23
          • 2017-05-21
          • 1970-01-01
          • 2021-10-20
          • 2014-09-23
          相关资源
          最近更新 更多