Javascript获取对象密钥名称
问题描述:
我将如何获得关键名称的后续?例如,我想要“button1”和“button2”?Javascript获取对象密钥名称
var buttons = {
button1: {
text: 'Close',
onclick: function(){
}
},
button2: {
text: 'Close2',
onclick: function(){
}
}
}
var i;
for(i in buttons){
if(buttons.hasOwnProperty(i)){
alert(buttons[i].text);
}
}
我试过使用.push()
虽然这不起作用。
答
这可能是更好的理解,如果你修改了措辞了一点:这里
var buttons = {
foo: 'bar',
fiz: 'buz'
};
for (property in buttons) {
console.log(property); // Outputs: foo, fiz or fiz, foo
}
注意你遍历对象的属性,使用property
为每个后续周期中的引用,每。
MSDN说的for (variable in [object | array ])
以下:
一个循环的每次迭代之前,变量分配对象或数组的下一个元素索引的下一属性名称。然后,您可以在循环内的任何语句中使用它来引用对象的属性或数组的元素。
还应注意,对象的属性顺序不是恒定的,并且可以改变,不像数组的索引顺序。这可能会派上用场。
答
变化alert(buttons[i].text);
到alert(i);
答
可变i
是你想找的键名。
答
ECMAScript第四版5还为您提供了整洁的方法Object.keys()
和Object.getOwnPropertyNames()
。
所以
Object.keys(buttons); // ['button1', 'button2'];
答
假设你有机会获得原型,这可能是工作。几分钟前我为自己写了这段代码;我一次只需要一个密钥,所以这对于键值对的大列表或用于分配多个密钥名称的时间效率不高。
function key(int) {
var j = -1;
for(var i in this) {
j++;
if(j==int) {
return i;
} else {
continue;
}
}
}
Object.prototype.key = key;
这是数组工作方式与数组相同,以节省头痛。在你的代码的情况下:
buttons.key(0) // Should result in "button1"
如果您的密钥名字其实都是'button1','button2'等等,你可能想使'buttons'数组 – Zirak 2012-04-26 13:52:23