如何在JavaScript对象中获取一个属性名称?
问题描述:
可能重复:
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],它会返回一个对象,我怎么才能得到它的名字?
答
这将使你的财产的阵列名:
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);
}
}
答
下面是你如何迭代特性,并得到相应的价值
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];
}
答
道具(和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);
答
要获得在循环使用一个对象的属性的名称:
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
继承。
dup:http://stackoverflow.com/questions/3068534/getting-javascript-object-key-list – Alexander 2012-04-05 06:21:16