Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-07-2005, 12:00   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 15
mehrdimensionales array sortieren

ich habe folgendes mehrdimensionales array, nennen wir es mal ARR:

0:[Objekt #78, Klasse 'Array'] [
0:"JOCHEN",
1:"blabla1",
2:4,
3:[Objekt #79, Klasse 'Array'] [
1:"xyz1",
2:"xyz1",
3:"xyz1",
4:"xyz1",
]
]
1:[Objekt #80, Klasse 'Array'] [
0:"MICHAEL",
1:"blabla2",
2:4,
3:[Objekt #81, Klasse 'Array'] [
1:"xyz2",
2:"xyz2",
3:"xyz2",
4:"xyz2",
]
]
2:[Objekt #82, Klasse 'Array'] [
0:"CLAUDIA",
1:"blabla3",
2:4,
3:[Objekt #83, Klasse 'Array'] [
1:"xyz3",
2:"xyz3",
3:"xyz3",
4:"xyz3",
]
]
dieser array möchte ich nun neu sortieren. wobei das array im ersten index neu sortiert werden soll. als basis soll aber ARR[x][0] dienen. nun möchte ich aber noch bestimmen was ARR[0] werden soll, also nicht alles nur alphabetisch.

beispiel:
einfach sortieren wäre nach ARR[x][0] >> 1. ARR[2], 2. ARR[0], 3. ARR[1]
es soll aber zum beispiel ARR[0][0] = MICHAEL, sprich der erste eintrag sein.
und dann erst wieder nach alphabet sortieren.

ziel ist folgendes array:

0:[Objekt #78, Klasse 'Array'] [
0:"MICHAEL",
1:"blabla2",
2:4,
3:[Objekt #79, Klasse 'Array'] [
1:"xyz2",
2:"xyz2",
3:"xyz2",
4:"xyz2",
]
]
1:[Objekt #82, Klasse 'Array'] [
0:"CLAUDIA",
1:"blabla3",
2:4,
3:[Objekt #83, Klasse 'Array'] [
1:"xyz3",
2:"xyz3",
3:"xyz3",
4:"xyz3",
]
]
2:[Objekt #84, Klasse 'Array'] [
0:"JOCHEN",
1:"blabla1",
2:4,
3:[Objekt #85, Klasse 'Array'] [
1:"xyz1",
2:"xyz1",
3:"xyz1",
4:"xyz1",
]
]

wenn also jemand verstanden hat, was ich meine und dann noch eine schicke idee beisteuern kann, wäre ich nicht nur positiv verwundert sondern auch dankbar.

Geändert von faseb (20-07-2005 um 12:07 Uhr)
faseb ist offline   Mit Zitat antworten
Alt 20-07-2005, 13:48   #2 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
ehrlich gesagt check ich mal gar nicht was du meinst. auf der anderen seite ist es im regelfall nicht so kompliziert nen array zu sortieren.
also schreib noch mal nach was sortieren soll und ich geb mein möglichstes dir zu helfen...

quaint
quaint ist offline   Mit Zitat antworten
Alt 20-07-2005, 15:01   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 15
ok...

also, es gibt ein mehrdimensionales array names ARR mit drei einträgen im ersten index, sprich ARR[0], ARR[1], ARR[2]. da es aber ein mehrdimensionales array ist. gibt es noch mehrere indizes, sprich ARR[0][x][x] etc...
nun möchte ich das array im ersten index sortieren, also ARR[0] wird zu ARR[2], ARR[1] wird zu ARR[0] usw. und dabei alle daten der weiteren indizes mit übernehmen. es soll aber nach einem unterindeze sortiert werden. in diesem fall nach ARR[x][0], MICHAEL oder CLAUDIA oder JOCHEN.
nun ist aber die schierigkeit, dass ich das ARR[0] selber festlegen möchte und dann erst alphabetisch weiter sortieren...

ich hoffe, das war jetzt verständlicher...
faseb ist offline   Mit Zitat antworten
Alt 20-07-2005, 15:13   #4 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
das heißt du sagst ihm pack mir michael nach oben und mach danach nach alphabeth weiter. ich hoffe ich hab dich richtig verstanden...
du müsstet also deiner sort-funktion das betreffende kriterium mitgeben.
ich schreib mal einfach drauf los:
ActionScript:
  1. function sort_arr(key) {
  2. zwischen_array = new Array();
  3. // jetzt nach dem schlüssel suchen
  4. for (var i=0; i<ARR.length; i++) {
  5. if (key == ARR[i][0]) {
  6. zwischen_array = ARR[0]
  7. ARR[0] = ARR[i];
  8. ARR[i] = zwischen_array;
  9. braek;
  10. }
  11. }
  12. // hiernach würde jetzt die alphabetische sortierung folgen
  13. }
hoffe das klappt oder bringt dich wenigstens weiter...

grüße, quaint
quaint ist offline   Mit Zitat antworten
Alt 20-07-2005, 18:53   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. var ary = [];
  2. ary.push(['e', '1']);
  3. ary.push(['f', '2']);
  4. ary.push(['c', '3']);
  5. ary.push(['g', '4']);
  6. ary.push(['b', '5']);
  7. ary.push(['g', '6']);
  8. ary.push(['d', '7']);
  9. ary.push(['e', '8']);
  10. ary.push(['b', '9']);
  11. ary.push(['a', '10']);
  12. //
  13. Array.prototype.spezXorder = function(spez) {
  14.     this.sort();
  15.     var a = [], b = [], c = [];
  16.     for (var j = 0; j<this.length; j++) {
  17.         var test = this[j][0];
  18.         var flag = true;
  19.         for (var i = spez.length-1; i>=0; i--) {
  20.             if (test == spez[i]) {
  21.                 (a[i]) ? a[i].push(this[j]) : a[i]=[this[j]];
  22.                 flag = false;
  23.                 break;
  24.             }
  25.         }
  26.         if (flag) b.push(this[j]);
  27.     }
  28.     for (var i = 0; i<a.length; i++) {
  29.         for (var j = 0; j<a[i].length; j++) {
  30.             c.push(a[i][j]);
  31.         }
  32.     }
  33.     return c.concat(b);
  34. };
  35. //
  36. Array.prototype.spez1order = function(spez) {
  37.     this.sort();
  38.     var a = [], b = [];
  39.     for (var j = 0; j<this.length; j++) {
  40.         (this[j][0] == spez) ? a.push(this[j]) : b.push(this[j]);
  41.     }
  42.     return a.reverse().concat(b);
  43. };
  44. //
  45. ary1 = ary.spez1order('e');
  46. trace('-----\\r'+ary1.join(\'\r'));
  47. aryX = ary.spezXorder(['g', 'c', 'e']);
  48. trace('-----\\r'+aryX.join('\\r'));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (20-07-2005 um 18:55 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 21-07-2005, 08:47   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
alternativer Vorschlag:
ActionScript:
  1. arr = [
  2.     [
  3.         "JOCHEN",
  4.         "blabla1",
  5.         4,
  6.         [
  7.             "xyz1",
  8.             "xyz1",
  9.             "xyz1",
  10.             "xyz1"
  11.         ]
  12.     ],
  13.     [
  14.         "MICHAEL",
  15.         "blabla2",
  16.         4,
  17.         [
  18.             "xyz2",
  19.             "xyz2",
  20.             "xyz2",
  21.             "xyz2"
  22.         ]
  23.     ],
  24.     [
  25.         "CLAUDIA",
  26.         "blabla3",
  27.         4,
  28.         [
  29.             "xyz3",
  30.             "xyz3",
  31.             "xyz3",
  32.             "xyz3"
  33.         ]
  34.  
  35.     ]
  36. ];
  37.  
  38. // diese Funktion gibt die Ordnung zweier Wörter
  39. // nach alphabetischer Sortierung zurück
  40. function alphaSort(a, b) {
  41.     var tmp:Array = [a, b];
  42.     tmp.sort(Array.CASEINSENSITIVE);
  43.    
  44.     return (tmp[0] == a);
  45. }
  46.  
  47. // diese Funktion wird von Array.sort gerufen
  48. function sortFunction(val1, val2) {
  49.     var a = val1[0];
  50.     var b = val2[0];
  51.     if (a == _global.SPECIAL_ARRAY_SORT) {
  52.         return -1;
  53.     } else if (b == _global.SPECIAL_ARRAY_SORT) {
  54.         return 1;
  55.     } else {
  56.         return (alphaSort(a, b) ? (-1) : (1));
  57.     }
  58. }
  59.  
  60. // die funktion nach außen, sehr unschön mit der
  61. // globalen Variable, keine Ahnung, wie man das schöner
  62. // (und trotzdem unkompliziert) macht.
  63. function spezSort(ar, before) {
  64.     _global.SPECIAL_ARRAY_SORT = before;
  65.     ar.sort(sortFunction);
  66.     delete _global.SPECIAL_ARRAY_SORT;
  67. }
  68.  
  69. spezSort(arr, "MICHAEL");
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp 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 22:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele