| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2011
Beiträge: 16
| Reihenfolge von Array-Elementen
Hi! Es geht um Arrays. Wenn ich in einer for-each-Schleife einen Array durchlaufe, in welcher Reihenfolge kommen dann die Elemente? Ist das prinzipiell undefiniert oder gibt es dazu bestimmte Regeln? Ich habe nämlich einen Fall, wo diese Reihenfolge weder nach ansteigenden Indizes geht (zuerst kam Index 256, dann 1, dann 259, dann 4,...), noch nach der Reihenfolge in der die Elemente zum Array hinzugefügt wurden. Würde mich über eine Antwort freuen. Wenn nämlich die Reihenfolge beim Durchlauf der for-each-Schleife nicht "vorhersehbar" ist, dann müsste ich das im Code anders lösen. lg, ZerNot |
| | |
| | #2 (permalink) |
| + Zimt & Zucker Registriert seit: Mar 2006 Ort: hinterm Mond gleich links
Beiträge: 2.041
|
das ist undefiniert, steht auch so in der Hilfe.
__________________ anbei Grüße vom milchreis: Viva la [Silb] "Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!" [Von null auf Flash in einem Klick.] <<< klick |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
? In einem Array undefiniert? Arrays sind dich indiziert?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #5 (permalink) | |
| + Zimt & Zucker Registriert seit: Mar 2006 Ort: hinterm Mond gleich links
Beiträge: 2.041
| Adobe ActionScript 3.0 * Looping Zitat:
Ich kann mir aber nur schwer vorstellen warum das bei der for each..in anders sein sollte.
__________________ anbei Grüße vom milchreis: Viva la [Silb] "Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!" [Von null auf Flash in einem Klick.] <<< klick | |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Object !== Array. Arrays sind indiziert, so lange man keine Hashes nutzt als Schlüssel. Daher sollte for each bei einem Array immer die "richtige" Reihenfolge (sortiert nach Index) ausgeben.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #7 (permalink) |
| + Zimt & Zucker Registriert seit: Mar 2006 Ort: hinterm Mond gleich links
Beiträge: 2.041
| Und wo steht, das die for Schleife dieser Indizierung folgt?
__________________ anbei Grüße vom milchreis: Viva la [Silb] "Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!" [Von null auf Flash in einem Klick.] <<< klick |
| | |
| | #8 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
| Code: package
{
import flash.display.Sprite;
import flash.text.TextField;
public class ArrayTest extends Sprite
{
public function ArrayTest()
{
const array:Array = [];
for (var i:int; i < 10; i++)
{
array[i] = i;
}
i = 0;
for each(var n:int in array)
{
trace(n, array[i++] == n);
}
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Aug 2011
Beiträge: 16
|
Nein, leider ist es eben nicht so. Wie gesagt, ich hatte den Fall, dass weder nach der "Indizierungsreihenfolge" noch nach der "Hinzufügungsreihenfolge" iteriert wurde. Ich vermute zwar stark, dass das nur bei "kargen" Arrays auftritt, aber auf jeden Fall war's so.
|
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Kannst du mal den Code zeigen bitte?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Aug 2011
Beiträge: 16
|
Mittlerweile habe ich den Code schon umgebaut, um das Problem zu beheben. Außerdem ist die Array-Erstellung und die Iteration usw. auf verschiedene Klassen verteilt. Ich konstruiere aber mal ein Beispiel, bei dem das Problem auftritt - bitte aber nicht die Sinnhaftigkeit hinterfragen - im Originalcode sah das anders aus: Code: var a:Array = new Array(); for (var i:int; i < 100; i++) a[i * 3] = new MyClass(i * 3); for each (var m:MyClass in a) trace(m.x); Code: public class MyClass extends Object
{
public function MyClass(x:int)
{
_x = x;
}
public function get x():int
{
return _x;
}
private var _x:int;
} |
| | |
| | #12 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ja, die Lücken, die du erzeugst sorgen für die "Unregelmäßigkeit". Bei einem einfach push ist alles gerade.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #13 (permalink) |
| + Zimt & Zucker Registriert seit: Mar 2006 Ort: hinterm Mond gleich links
Beiträge: 2.041
| Der Schein kann trügen. Ich hätte es gern irgendwo dokumentiert, denn wenn es nur in sehr seltenen Fällen anders ist, könnte die Fehlersuche schwierig werden. Kann man irgendwo sehen, was da wirklich passiert?
__________________ anbei Grüße vom milchreis: Viva la [Silb] "Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!" [Von null auf Flash in einem Klick.] <<< klick |
| | |
| | #14 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Man kann versuchen Tamarin zu debuggen. Aber letzten Endes scheint es so zu sein, das die for each austeigt, wenn Indizes implzit erzeugt werden durch Code: [][1] = 2;
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| type casting mit array elementen | killkolor | ActionScript 1 | 2 | 08-01-2005 15:52 |
| Array mit Elementen des Types TextField | Sandman_2k | Flash MX | 1 | 01-06-2004 22:40 |
| gleichzeitiges auslesen von array elementen | kissel | ActionScript 1 | 2 | 14-01-2004 14:20 |
| Array.push mit x Elementen??? | mrfreeman12 | ActionScript 1 | 3 | 06-08-2003 22:05 |
| Zufällige Auswahl von Array-Elementen | sschacht | ActionScript 1 | 4 | 09-03-2003 14:27 |