Вопрос по javascript – Javascript получить имя ключа объекта

59

Как бы я получить ключевое имя для последующего? Например, я хочу & quot; кнопку1 & quot; и & quot; button2 & quot ;?

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() хотя это не сработало.

Если ваши ключевые имена на самом делеbutton1, button2 и так далее, вы можете сделатьbuttons массив Zirak

Ваш Ответ

6   ответов
4

i Ваше ключевое имя.

3

что у вас есть доступ к Prototype, это может сработать. Я написал этот код для себя всего несколько минут назад; Мне нужен был только один ключ за раз, так что это неэффективно по времени для больших списков пар ключ: значение или для выделения нескольких имен ключей.

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"
0

var obj ={parts:{costPart:1000, salesPart: 2000}}; console.log(Object.keys(obj));

вывод будет «частями»;

7

alert(buttons[i].text); вalert(i);

43

Object.keys() а такжеObject.getOwnPropertyNames().

Так

Object.keys( buttons );  // ['button1', 'button2'];
72

var buttons = {
  foo: 'bar',
  fiz: 'buz'
};

for ( var property in buttons ) {
  console.log( property ); // Outputs: foo, fiz or fiz, foo
}

Обратите внимание, что вы перебираете свойства объекта, используяproperty в качестве ссылки на каждый во время каждого последующего цикла.

MSDN говорит оfor ( variable in [object | array ] ) следующие:

Before each iteration of a loop, variable is assigned the next property name of object or the next element index of array. You can then use it in any of the statements inside the loop to reference the property of object or the element of array.

Также обратите внимание, что порядок свойств объекта не является постоянным и может изменяться, в отличие от порядка индекса массива. Это может пригодиться.

@Demodave Чтобы получить значениеfoo собственности, вы бы просто отозвать егоbuttons объект:buttons.foo===buttons['foo'], Из цикла for вы вызываетеbuttons[property], Сегодня вы также можете использоватьArray.entries({foo:"bar",fizz:"buzz"}) выводить[['foo':'bar'],['fizz','buzz']].
как бы вы получили Foo?

Похожие вопросы