PDA

Volledige versie bekijken : Arrays in array - maf probleem


Gibsy
%Europe/Berlin %890 %2007, 22:22
Ik heb een array met daarin een aantal (sub)arrays als elementen. Ik wil nu één zo'n sub-array uit de 'moeder-array' uitlezen en daar bewerkingen op uitvoeren. Dat lukt wel, maar het vreemde is dat de moeder-array daarmee óók wijzigt ZONDER dat ik de gewijzigde sub-array ooit terugzet...

Gratis virtueel biertje voor degene die me kan uitleggen wat hier gebeurt! :P
Gibsy

var moederReeks:Array = [[1,2],[11,22]];
var subReeksje:Array;

subReeksje=moederReeks[0]; //subReeksje wordt nu [1,2]
subReeksje.push(3); //bewerking op subReeksje, NIET op de moederReeks!

trace("subReeksje ="+subReeksje); // returns 1,2,3
trace("moederReeks "+moederReeks); // returns 1,2,3,11,12

//Waarom is de moederReeks óók aangepast door een bewerking op een ANDERE reeks???
//Wat doet die 3 daar???

Gibsy
%Europe/Berlin %898 %2007, 22:33
Vergeet bovenstaande post. Ik kan mn vraag korter stellen en het heeft bovendien niets met Arrays in arrays te maken. Sorry voor de fuzz.

Waarom verandert reeks1 in onderstaand script door een bewerking op reeks2?
groeten Gibsy

var reeks1:Array;
var reeks2:Array;

reeks1=[1,2,3];
reeks2=reeks1;

reeks2.push(4);

trace(reeks1); // returns 1,2,3,4

Dauntless
%Europe/Berlin %900 %2007, 22:36
De Array class is een complex type. Dat wil zeggen dat er met verwijzingen gewerkt wordt naar een bepaalde geheugenplaats. In jouw voorbeeld kopieer je de referentie van reeks1 naar die van reeks2, waardoor ze dus dezelfde array representeren.

Een oplossing:

reeks2 = reeks1.concat();