Arrayelemente zählen?
twb
- javascript
Liebe alle - im Zusammenhang mit meinem Web Sudoku (URL oben) tauchte folgende Grundsatzfrage auf: Gibt es in Javascript eine Möglichkeit, gleiche Variablen (Werte oder Strings) innerhalb eines Arrays zu zählen? Oder etwas ausführlicher: In einem Beispielarray
Farben=new Array("grün", "gelb", "blau", "grün", "rot");
würde ich gern mittels einer Array-Methode die Anzahl "grün" ermitteln. Als Parameter würde also "grün" übergeben; der Rückgabewert müsste die Anzahl des Strings "grün" sein, hier also 2. Ich werde und werde nicht fündig.
Ich hab's in meiner Verzweiflung schliesslich anders gelöst - und dabei sicherlich um sieben Ecken herum gedacht. Ich sortiere nun also den Array
Farben.sort(); wandle ihn danach mittels
Farben.join(""); in einen String ohne Trennzeichen um und ermittle schliesslich mittels
if (Farben.indexOf("grüngrün")!=-1) (undsoweiter)
, ob der gesuchte String mehr als einmal vorkommt. Unheimlich umständlich, das Ganze, selbst wenn es anstandslos funktioniert.
Mit Dank! Thomas
hi,
Gibt es in Javascript eine Möglichkeit, gleiche Variablen (Werte oder Strings) innerhalb eines Arrays zu zählen?
Durchlaufe das Array in einer Schleife, vergleiche jeden Wert mit dem gesuchten - und zähle die Treffer mit.
gruß,
wahsaga
Durchlaufe das Array in einer Schleife, vergleiche jeden Wert mit dem gesuchten - und zähle die Treffer mit.
for (i=ich;i<Volltrottel;i++) Hand.aufStirn("klatsch");
Und ich zermarterte mir das Hirn nach Möglichkeiten à la Array.count();... Danke! Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr.
Hallo twb.
for (i=ich;i<Volltrottel;i++) Hand.aufStirn("klatsch");
Hm, du willst eines Tages Volltrottel werden? Interessante Zukunftspläne.
Einen schönen Mittwoch noch.
Gruß, Mathias
hi,
for (i=ich;i<Volltrottel;i++) Hand.aufStirn("klatsch");
Hm, du willst eines Tages Volltrottel werden? Interessante Zukunftspläne.
Das i++ wundert mich viel mehr - ob da diverse Spam-Mails, die für gewisse "Enlargements" werben, Zweifel gesäht haben ...?
scnr,
wahsaga
Moin Mathias,
for (i=ich;i<Volltrottel;i++) Hand.aufStirn("klatsch");
Hm, du willst eines Tages Volltrottel werden? Interessante Zukunftspläne.
Aber nein, lies doch die Anweisung etwas genauer:
Er möchte über die gesamte Distanz zwischen sich und dem Volltrottel die Stirn an der Hand auf "klatsch" anwenden.
Ich vermute aber, er meinte eigentlich
Hand.klatsch(Stirn);
denn unter einer Methode aufStirn() kann ich mir im Moment nicht viel vorstellen - vor allem, warum sie eine Methode des Objekts Hand sein sollte. ;-)
So long,
Martin
Hallo Martin.
for (i=ich;i<Volltrottel;i++) Hand.aufStirn("klatsch");
Hm, du willst eines Tages Volltrottel werden? Interessante Zukunftspläne.Aber nein, lies doch die Anweisung etwas genauer:
Er möchte über die gesamte Distanz zwischen sich und dem Volltrottel die Stirn an der Hand auf "klatsch" anwenden.
Ich lese es eher so:
Sei „i“ gleich ich und erhöhe „i“ so lange, bis es nicht mehr kleiner als ein Volltrottel ist.
Einen schönen Donnerstag noch.
Gruß, Mathias
Liebe alle - im Zusammenhang mit meinem Web Sudoku (URL oben) tauchte folgende Grundsatzfrage auf: Gibt es in Javascript eine Möglichkeit, gleiche Variablen (Werte oder Strings) innerhalb eines Arrays zu zählen? Oder etwas ausführlicher: In einem Beispielarray
Farben=new Array("grün", "gelb", "blau", "grün", "rot");
würde ich gern mittels einer Array-Methode die Anzahl "grün" ermitteln. Als Parameter würde also "grün" übergeben; der Rückgabewert müsste die Anzahl des Strings "grün" sein, hier also 2. Ich werde und werde nicht fündig.
Dafür bietet sich ein assoziative Array an, dass es zwar in JS so nicht gibt, aber mit einem Objekt nachgebaut werden kann.
Array.prototype.count = function( was )
{
var tmp = {};
for(var i = 0; i < this.length; i++) if(tmp[this[i]]) tmp[this[i]]++ else tmp[this[i]] = 1;
return tmp[was]
}
var Farben = new Array("grün", "gelb", "blau", "grün", "rot");
alert(Farben.count('grün'));
Struppi.