Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-08-2009, 13:40   #1 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Array kürzen ohne Werte zu verlieren

Hi,

gibt es wie oben im Titel steht die Möglichkeit ein Array zu kürzen ohne die nachfolgenden Werte zu verlieren.

Test = new Array();

Test[0] = "Eins";
Test[1] = "Zwei";
Test[2] = "Drei";

Wenn ich jetzt angebe Test.length = 2;

dann wird der Inhalt in Test[2] gelöscht, funktioniert das aber auch so, dass der Wert Test[2] dennoch erhalten bleibt, aber das Array eine Länge von 2 hat.
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 07-08-2009, 13:47   #2 (permalink)
?-Developer
 
Registriert seit: Jul 2004
Ort: Zuchwil (CH)
Beiträge: 901
Du kannst es ja in ein neues Array packen? (Array.slice(...))
__________________
Nur tote Fische schwimmen mit dem Strom
silentx ist offline   Mit Zitat antworten
Alt 07-08-2009, 18:15   #3 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Array in anderes Array kopieren...

Hi!

Was ist denn genau der Unterschied zwischen folgenden zweit Methoden, es geht darum ein Array in ein anderes zu kopieren, beispiel:

ArrayAlt = new Array();
ArrayNeu = new Array();

Wenn ich ArrayNeu in ArrayAlt kopieren möchte, habe ich das bisher immer so gemacht:

ArrayNeu = ArrayAlt;

Anscheinend gibt es aber einen unterschied wenn ich es so mache:

for (t=0; t<=ArrayAlt.length; t++)
{
ArrayAlt[t]=ArrayNeu[t];
}


Es kommt zu problemen wenn ich zum Beispiel ArrayNeu mit ArrayNeu.length verkürze. Angenommer ich habe 10 Felder in ArrayNeu, kürze dies auf 5 mit ArrayNeu.length=5, dann gibt es probleme wenn ich sage ArrayNeu (jetzt mit 5 Feldern) = ArrayAlt (Mit Beispielsweise 10 Feldern);.
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.

Geändert von velocity. (07-08-2009 um 18:17 Uhr)
velocity. ist offline   Mit Zitat antworten
Alt 07-08-2009, 19:25   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
1.
ActionScript:
  1. var origin:Array = [] /* with elements. */;
  2. var copy:Array = orgin;
ist keine (!) Kopie. Du referenzierst auf das gleiche Objekt. Strings und andere Primitive kannst du so kopieren, aber keine Referenztypen.

2.
ActionScript:
  1. var orgin:Array = [] /* with elements. */;;
  2. var copy:Array = [];
  3. for (var i:Number = 0; i <= origin.length; ++i)
  4. {
  5.     copy[i] = origin[i];
  6. }
Ist falsch, da es heissen müsste i < origin.length;.

3. Kopien von Array erstellt man mit der Array.slice():
ActionScript:
  1. trace("# Setting the reference.");
  2. var origin:Array = [0, 1, 2, 3, 4, 5];
  3. var copy:Array = origin;
  4.  
  5. trace("origin:", origin);
  6. trace("copy  :", copy);
  7.  
  8. trace("# Reversing the origin.");
  9. origin.reverse();
  10.  
  11. trace("origin:", origin);
  12. trace("copy  :", copy);
  13.  
  14. trace("# Reversing the origin (original state).");
  15. origin.reverse();
  16.  
  17. trace("# Setting the copy via Array.slice.");
  18. copy = origin.slice();
  19.  
  20. trace("origin:", origin);
  21. trace("copy  :", copy);
  22.  
  23. trace("# Reversing the origin.");
  24. origin.reverse();
  25.  
  26. trace("origin:", origin);
  27. trace("copy  :", copy);
Ausgabe:
Zitat:
# Setting the reference.
origin: 0,1,2,3,4,5
copy : 0,1,2,3,4,5
# Reversing the origin.
origin: 5,4,3,2,1,0
copy : 5,4,3,2,1,0
# Reversing the origin (original state).
# Setting the copy via Array.slice.
origin: 0,1,2,3,4,5
copy : 0,1,2,3,4,5
# Reversing the origin.
origin: 5,4,3,2,1,0
copy : 0,1,2,3,4,5
Omega Psi ist offline   Mit Zitat antworten
Alt 07-08-2009, 20:11   #5 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Ok, alles klar!

Aber eben mit


Zitat:
for (var i:Number = 0; i < origin.length; ++i)

{

copy[i] = origin[i];

}
würde es ja genauso gehen!
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.

Geändert von velocity. (07-08-2009 um 21:00 Uhr)
velocity. ist offline   Mit Zitat antworten
Alt 07-08-2009, 20:15   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Nein, bitte auch die Zeilen zwischen dem Code lesen... i < origin.length;
Omega Psi ist offline   Mit Zitat antworten
Alt 07-08-2009, 21:00   #7 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
ja mein ich ja, sorry, hab des falsche kopiert!

So stimmts dann!
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 24-02-2011, 20:57   #8 (permalink)
EventDispatcher
 
Benutzerbild von Peadey
 
Registriert seit: Dec 2006
Beiträge: 52
Danke, Omega, das ist zwar schon ne Weile her, aber Du hast mir viele Stunden Suche erspart!
__________________
Grüße, Peter
Peadey ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
no-brainer

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele