2009-08-02 1 views
0

для файла XML, я хочу, чтобы создать массив в ActionScript, где я могу ссылаться на конкретное значение с ключом я устанавливаю, а не 0, 1, 2 и т.д.Создать ассоциативный массив с динамическими ключами в Actionscript 2

buildings = myParsedObjectFromXML; 

var aBuildings = new Array(); 

for (building in buildings) { 
    var currentBuilding = buildings[building][0]; 
    var key:String = currentBuilding.buildingCode; 

    aBuildings[key][property1] = currentBuilding.someOtherValue; 
    aBuildings[key][property2] = currentBuilding.aDifferentValue; 
    ... etc 
} 

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

// building description 
trace(aBuildings[BUILDING1][property2]); 

но выше не работает - что мне не хватает?

ответ

2

Я хотел бы начать с инстанцированием моих aBuildings переменными как объект, а не массив:

var aBuildings = new Object(); 

Далее необходимо создать объект первым ключ, в котором вы хотите сохранить свойства.

aBuildings[key] = new Object(); 
aBuildings[key]["property1"] = currentBuilding.someOtherValue; 
aBuildings[key]["property2"] = currentBuilding.aDifferentValue; 

Тогда вы должны быть в состоянии прочитать значения из aBuildings объекта:

trace(aBuildings["BUILDING1"]["property2"]); 

Имейте в виду, что если building1 и свойство2 не Строковые переменные, необходимо использовать строковые литералы.

+0

+1. Ассоциативные «массивы» не служат никакой полезной цели AFAIK. Если вы хотите числовой порядок, используйте массивы. Если вы хотите получить доступ к ключам, используйте объект. Также «{}» является ярлыком для «new Object()» –

+0

@Chetan Sastry: объект в ActionScript является ассоциативным массивом :) – Luke