Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-03-2006, 10:29   #1 (permalink)
Tommy
 
Benutzerbild von maxack
 
Registriert seit: Nov 2001
Ort: London
Beiträge: 84
2D Array sortieren

Jungs und Maedels, stehe im Moment auf der Leitung mit folgendem Problem:

Ich habe einen mehrdimensionalen Array, also etwa so:

array = [ [2,5,7], [6,8,3], [8,4,7] ]

Diesen moechte ich nun ordnen, aber nach dem jeweils zweiten Element der internen Arrays. Das Ergebnis sollte also so sein:

arraySortiert = [ [8,4,7], [2,5,7], [6,8,3] ]

Gibt es da eine kompakte, elegante Loesung?
maxack ist offline   Mit Zitat antworten
Alt 31-03-2006, 10:42   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Du meinst so..?
PHP-Code:
var arr = [ [257], [683], [847], [912] ];

trace(arr.join("\n"));

arr arr.sort(sortBySecondElement);

trace("-----");

trace(arr.join("\n"));

function 
sortBySecondElement(ab) {
    
    if (
a[1] > b[1]) {
        return 
1;
    } else if (
a[1] < b[1]) {
        return -
1;
    } else {
        return 
0;
    }
    

Edit:
übersehen, dass es um AS1 geht... deswegen Typisierung rausgenommen

Geändert von sonar (31-03-2006 um 10:45 Uhr)
sonar ist gerade online   Mit Zitat antworten
Alt 31-03-2006, 10:46   #3 (permalink)
Tommy
 
Benutzerbild von maxack
 
Registriert seit: Nov 2001
Ort: London
Beiträge: 84
Krass.

Genau so.

Ich danke vielmals!
maxack ist offline   Mit Zitat antworten
Alt 31-03-2006, 12:12   #4 (permalink)
Tommy
 
Benutzerbild von maxack
 
Registriert seit: Nov 2001
Ort: London
Beiträge: 84
Wie koennte ich das Ganze nun auf einen 3D Array ausbauen?

PHP-Code:
var arr = [ [ [257], [683], [847], [912] ], [ [358], [139], [725], [263] ], [ [821], [317], [616], [164] ] ]; 
Muss ich dazu den Array mit Index versehen und dann mit sortOn() vergleichen, oder geht das irgendwie einfacher?

Danke nochmal!
maxack ist offline   Mit Zitat antworten
Alt 31-03-2006, 12:19   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!

Meinst du das so?
PHP-Code:
for (var 0x<arr.lengthx++) {
    
arr[x] = arr[x].sort(sortBySecondElement);

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 31-03-2006, 12:36   #6 (permalink)
Tommy
 
Benutzerbild von maxack
 
Registriert seit: Nov 2001
Ort: London
Beiträge: 84
Frager, ich habe das mal eingegeben und bekam folgendes Resultat, was nicht ganz genau das ist, was ich brauche:

PHP-Code:
Orginal:
2,5,7,6,8,3,8,4,7,9,1,2
3
,5,8,1,3,9,7,2,5,2,6,3
8
,2,1,3,1,7,6,1,6,1,6,4
-----
Sortiert:
9,1,2,6,8,3,2,5,7,8,4,7
2
,6,3,7,2,5,3,5,8,1,3,9
8
,2,1,1,6,4,6,1,6,3,1,
Was ich aber gerne haben wuerde, ist, dass in dem 3D Array jede zweite Stelle der tiefsten Arrays (also die mit den drei Ziffern) miteinander verglichen wird, und diese dann sortiert als 2D Array ausgegeben werden. Also etwa so:

Sortiert:
irgendeinSortierterArray = [[9,1,2],[8,2,1],...]

Geändert von maxack (31-03-2006 um 12:37 Uhr)
maxack ist offline   Mit Zitat antworten
Alt 31-03-2006, 12:44   #7 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hmmm... Meine Ausgabe:
PHP-Code:
Original:
2,5,7,6,8,3,8,4,7,9,1,2
3
,5,8,1,3,9,7,2,5,2,6,3
8
,2,1,3,1,7,6,1,6,1,6,4
-----
Sortiert:
9,1,2,8,4,7,2,5,7,6,8,3
7
,2,5,1,3,9,3,5,8,2,6,3
6
,1,6,3,1,7,8,2,1,1,6,
Und es soll quasi arr[0][1][1] mit arr[1][1][1] usw verglichen werden, oder wie?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 31-03-2006, 13:30   #8 (permalink)
Tommy
 
Benutzerbild von maxack
 
Registriert seit: Nov 2001
Ort: London
Beiträge: 84
Komisch, da habe ich wohl was verbockt.

Zitat:
Und es soll quasi arr[0][1][1] mit arr[1][1][1] usw verglichen werden, oder wie?
Genau!
Aber da es mir ja nur auf die Reihenfolge der tiefsten Arrays ankommt, ist es wohl am besten, wenn ich aus dem 3D Array alle tiefsten Elemente in einen neuen Array packe und dann diesen Array nach dem jeweils zweiten Element sortiere. Was meinst du?
maxack ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele