Доступ к динамически названным объектам JavaScript? - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть объект JS:

var testObj = new Object();

имеет свойство под названием volume1, поэтому

testObj.volume1

имеет значение. Как бы я мог получить доступ к этому свойству, используя что-то вроде

testObj.volume + "1"

Чтобы придать больше контекста, объект на самом деле имеет больше свойств, например

testObj.volume1, testObj.volume2 and testObj.volume3 

и я хочу получить к ним доступ, используя некоторую итерацию. Я пытался играть с элементом window[], но не добился большого успеха.

Спасибо!

Ответы [ 4 ]

7 голосов
/ 10 февраля 2010
   testObj["volume" + 1]

но вы на самом деле хотите массив здесь

   testObj.volume = [...]
   testObj.volume[1] = whatever
2 голосов
/ 10 февраля 2010

не по теме это считается лучшей практикой

var testObj = {};

вместо

var testObj = new Object();
0 голосов
/ 10 февраля 2010

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

for(var PropName in testObj) {
    var PropValue = testObj[PropName];
    ....
}

В случае, если вы хотите, чтобы свойство, имя которого начиналось только с 'value', вы также можете сделать это:

for(var PropName in testObj) {
    if (!/^value[0-9]$/.match(PropName))
        continue;
    var PropValue = testObj[PropName];
    ....
}

ИЛИ, если число после «значения» всегда непрерывно, вы можете просто использовать базовый цикл for.

for(var I = 0; I <= LastIndex; I++) {
    var PropName  = "value" + I;
    var PropValue = testObj[PropName];
    ....
}

Надеюсь, это поможет.

0 голосов
/ 10 февраля 2010

Используйте что-нибудь в моде testObj["volume" + "1"];)

Обозначения object.property и object["property"] (почти) эквивалентны в javascript.

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