PDA

Volledige versie bekijken : Op volgorde door een object lopen


ClarkNova
%Europe/Berlin %529 %2007, 13:42
Hee allemaal,

niet zo zeer specifiek AS3, maar daar ben ik wel in aan het ontwikkelen, dus wie weet.
Ik wil een soort associatief array maken maar als ik goed begrijp is dat niet zo ondersteund als in bijv. PHP. Ik eindig dus altijd met een object om mijn genaamde variabelen in op te slaan. Om er toch mee te loopen gebruik ik het volgende:

var myObject:Object = {};
myObject.b = 1;
myObject.a = 2;
myObject.z = 3;

for(var i:String in myObject) {
trace(i + ' ' + myObject.i);
}

Dit geeft echter de variabelen in een willekeurige volgorde terug.
Bij dit voorbeeld in de output

a 2
b 3
z 1

Niet alfabetisch, niet op volgorde van input, niet gesorteerd op de waarde..
Is er een manier om dit op input volgorde te krijgen?
Ik zou graag als ouput het volgende krijgen, omdat ik het er ook in die volgorde heb ingestopt.

b 1
a 2
z 3

Ik zou natuurlijk zelf een class kunnen bouwen die gebruik maakt van 2 arrays en dan gaat matchen, maar wellicht is er gewoon iets ingebouwd?

Dank!

Dauntless
%Europe/Berlin %548 %2007, 14:09
Doet hij het in php dan wel in een bepaalde volgorde ? (Niet sarcastisch bedoelt of zo, ik weet het niet :p)

Je kan eventueel een 2d array gebruiken:
var ar:Array = new Array();
ar.push(new Array("a", 1));
ar.push(new Array("b", 2));
ar.push(new Array("c", 3));
En dan kan je gewoon loopen...

ClarkNova
%Europe/Berlin %549 %2007, 14:11
Volgens mij houdt hij in PHP gewoon de volgorde aan waarin je het ingeeft, en je kan ook nog op key sorteren enzo. Niet getest hoor, daar niet van :)

Maar bedankt, deze oplossing is lekker simpel en goed genoeg voor waar ik mee bezig ben. Wellicht maak ik ooit nog eens een mooie AssocArray class voor jullie allemaal :P

B-Mantis
%Europe/Berlin %889 %2007, 22:21
ik ben er aardig van overtuigt dat het probleem hier in zit:
var i:String
maakt van i een string, je wil er een getal van maken.
for(var i:Number in myObject) {
trace(i + ' ' + myObject.i);
}

Dauntless
%Europe/Berlin %942 %2007, 23:37
Nee, dat klopt niet. De for(var in object) structuur gebruikt een string en je kan sowieso niet met een number argument werken voor een associatieve array (a.k.a. object). Die number kan je alleen gebruiken wanneer het om een echte array gaat, waarbij het nummer dan de index is.