Flashhilfe.de - Flash Community

Prototype: Array.prototype.group [Flash 8]

 


AntwortenRegistrieren Seite1  

BackToDos#1
Benutzerbild von BackToDos
Beiträge: 571
Wohnort: LE
Registriert: Apr 2006

29.03.2007, 17:19

gruppiert und zählt die Elemente eines Arrays

Prototype:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* diese Methode gruppiert alle Elemente eines Arrays zählt diese dann gruppenweise durch
* und gibt ein Array zurück, welches an jeder Stelle ein Ursprungselement und seine Häufigkeit enthält,
* wobei diese nach Häufigkeit und nach Wert sortiert sind ...
* bei Vergleich werden die Werte in Strings umgewandelt ...
*/

Array.prototype.group = function ():Array {
   var a:Array = this.slice(0,this.length);//array kopieren
   a.sort();//sortieren
   var groups:Array = new Array();//leeres Array für die Gruppierung
   var last:Object = a[a.length-1];//letztes Element
   var count:Number = 1;//Anzahl des Elements
   var current:Object;//derzeitiges Element
   for (var i:Number = a.length-1;i>-2;i--) {
      current = a[i];//auslesen
      if (current.toString() == last.toString()) count++;//wenn das selbe wie zuletzt, hinzuzählen
      else {
         groups.push([last,count]);//sonst Element und Anzahl abspeichern
         last = current;//neues zu zählendes Element setzen
         count = 1;//Anzahl auf 1
      }
   }
   groups.sortOn([1,0],Array.DESCENDING);//sortiere nach Häufigkeit und dann nach Wert
   return groups;//und zurück
}


Beispiel Aufruf:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var o:Object = new Object();
o.toString = function () {
   return "6";
}
var a:Array = [1,o,"6",3,6,8,9,0,5,3,6,8,6,5];
trace(a);
trace(a.group().join("\n"));
/* output
1,6,6,3,6,8,9,0,5,3,6,8,6,5
6,5 (die 6 fünf mal)
9,2
8,2
5,2
3,2
1,1
0,1 */
<

greetz
back2dos
Schlagwörter: Array, prototype
Werbung
Beiträge: 0
Registriert: Feb 2016


Q-DRA#2
Benutzerbild von Q-DRA
Beiträge: 15
Registriert: Nov 2007

13.12.2007, 17:32

schau noch mal genau hin - bei dem zweiten gezählten "Paket" ist ein Fehler.
Die 9 ist überhaupt nicht 2 mal vorhanden.
Nimmst Du die 9 dann komplett raus, dann ist die 8 auch 3 mal da, obwohl sie nur 2 mal im Array ist.
Irgendwo ist da ein kleiner Fehler beim zählen, aber ich habe keinen Nerv dazu es zu suchen ;-)
(Hab nen anstrengenden Tag hinter mir)

Schau doch noch mal bitte genau nach

Ansonsten ist es echt nicht schlecht!!

Ciao

Q-DRA#3
Benutzerbild von Q-DRA
Beiträge: 15
Registriert: Nov 2007

13.12.2007, 17:47

Hab den Fehler gefunden!

Er befindet sich hier:

ActionScript:
1var count:Number = 1;//Anzahl des Elements


Da muss eine 0 hin beim initialisieren!

bis denn


AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de