2012-04-05 96 views
0

可能重复:
Pick random property from a Javascript object如何在JavaScript对象中获取一个属性名称?

假设我有一个JavaScript对象:

​​

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

+0

dup:http://stackoverflow.com/questions/3068534/getting-javascript-object-key-list – Alexander 2012-04-05 06:21:16

回答

4

这将使你的财产的阵列

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

它还能给你的目标对象的“本土”属性的名称。为了避免这种情况,可以使用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)是一个对象(不是数组对象)。 所以你不能做道具[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) { 
    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是一个好主意,因为它会过滤掉obj的属性等通过其prototype继承。