2010-02-09 3 views
2

У меня есть JS объект:Доступ к динамически названным объектам JavaScript?

var testObj = new Object(); 

, который имеет свойство volume1, так

testObj.volume1 

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

testObj.volume + "1" 

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

testObj.volume1, testObj.volume2 and testObj.volume3 

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

Спасибо!

ответ

7
testObj["volume" + 1] 

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

testObj.volume = [...] 
    testObj.volume[1] = whatever 
+0

Doh! Я такой идиот! – Rio

0

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

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

-1

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

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

В случае, если вы хотите только свойство с именем началось с «значением» только, вы можете также сделать это:

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

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

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

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

2

по теме считается лучше pratice сделать

var testObj = {}; 

вместо

var testObj = new Object(); 
+0

жаль, что я новичок в stackoverflow – hojberg

Смежные вопросы