2012-04-05 142 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繼承。

相關問題