Получение имен членов массива в javascript динамически во время выполнения - PullRequest
1 голос
/ 02 марта 2012

Прежде всего, я не уверен, возможно ли это на самом деле в javascript, но все же я чувствовал, что стоит спросить.

Хорошо, я пытаюсь динамически получать имена членов массива (или объекта, как вы могли бы сказать) во время выполнения.

Позвольте мне объяснить. У меня есть такой объект:

Results :-
member_name1 : value_1
member_name2 : value_2
member_name3 : value_3

Здесь Result - это имя объекта, члены которого имеют такие значения, как member_name1, member_name2 и т. Д., И у них есть значения, такие как value_1 и value_2 соответственно. То, что я пытаюсь сделать, - это получить имена членов вроде member_name1 this во время выполнения; не это ценность. Обычно я получаю доступ к значению Results.member_name1.

Я надеюсь, что смогу изобразить проблему!

Ниже приведен скриншот объекта:

http://i.stack.imgur.com/dzAgm.png

Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Предполагая, что obj является вашим объектом, вы можете получить имена всех его свойств следующим образом:

var names = [];

for(var name in obj) {
    names.push(name);
}

Однако имейте в виду, что это также подберет все расширения, которые были сделаны для obj через свойство prototype его класса. Если вы хотите исключить их и получить только свойства, определенные для obj, вы можете отфильтровать их с помощью

for(var name in obj) {
    if(obj.hasOwnProperty(name)) {
        names.push(name);
    }
}

Дополнительная информация по for...in по MDN .

1 голос
/ 02 марта 2012

Вы можете получить к ним доступ, используя JavaScript для конструкции .Рассмотрим следующее:

var member_names = [],
    data = {
        foo1: 'bar1',
        foo2: 'bar2',
        foo3: 'bar3',
    };

​for (var i in data) {
    member_names.push(i);
}

console.log(member_names);

Здесь у нас есть пустой массив с именем * member_names * и ваш объект данных.В нашем цикле i будет ссылаться на имя свойства, поэтому вы можете поместить его в массив member_names и затем получить доступ ко всем им там.

...