Javascript получить имя ключа объекта
Как я могу получить имя ключа для следующего? Например, я хочу " button1 "и"button2"?
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() хотя это не сработало.
5 ответов:
Это можно было бы лучше понять, если бы вы немного изменили формулировку:
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 ] )следующее:перед каждой итерацией цикла переменной присваивается имя следующего свойства объекта или индекс следующего элемента массива. Затем вы можете использовать его в любом из операторы внутри цикла для ссылки на свойство объекта или элемент массива.
обратите внимание также, что порядок свойств объекта не является постоянным и может изменяться, в отличие от порядка индексов массива. Это может пригодиться.
ECMAscript edition 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"
Comments