Как в Javascript преобразовать строку, чтобы ее можно было использовать для вызова свойства? - PullRequest
4 голосов
/ 19 апреля 2010

Итак, у меня есть ассоциативный массив, а ключи в массиве являются свойствами объекта. Я хочу перебрать массив и в каждом случае сделать что-то вроде этого:

Object.key

Это, однако, не работает и приводит к возвращению неопределенного, а не значения свойства.

Есть ли способ сделать это?

Ответы [ 3 ]

10 голосов
/ 19 апреля 2010

Вы можете использовать цикл for ... in:

for (var key in obj) {
    //key is a string containing the property name.

    if (!obj.hasOwnProperty(key)) continue;  //Skip properties inherited from the prototype

    var value = obj[key];
}
9 голосов
/ 19 апреля 2010

Вы должны использовать метод доступа к свойствам в скобках:

var value = object[key];

Этот оператор может даже вычислять выражения, например ::100100

var value = object[condition ? 'key1' : 'key2'];

Дополнительная информация:

Не забывайте, что методы объектов Array предполагают работу с числовыми индексами, вы можете добавить любое имя свойства, но не рекомендуется , поэтому вместо этого создайте объект Array т.е. var obj = []; или var obj = new Array(); вы можете использовать простой экземпляр объекта (например, var obj = {} или var obj = new Object();.

2 голосов
/ 19 апреля 2010

Да. Предполагая, key является строкой, попробуйте myObject[key]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...