n'Abend.
Wie zum Donner schaffe ich es, eine Funktion zu schreiben, die in einem Array beliebige gleiche Werte zählt und mir die Werte und die Anzahl zurückgibt
Üben, üben, üben.
var Fruechte = new Array(Zitrone,Apfel,Birne,Zitrone,Zitrone,Apfel);
Zitrone, Apfel und Birne sind leider gerade aus, die gibt's aber auch noch als Zeichenketten:
Fruechte = new Array("Zitrone","Apfel","Birne","Zitrone","Zitrone","Apfel");
gleicheWerte(Fruechte);
Ah so, nett.
soll folgendes Array zurück geben:
(Apfel,2,Birne,1,Zitrone,3)
Okay.
Die Werte zu sortieren ist kein Problem, aber dann jeden Wert mit jedem zu vergleichen und zu zählen...
... ist auch keins.
Wer kann mir helfen?
Naja, solange du am üben, üben, üben bist, kannst du mein Script haben:
<script type="text/javascript">
<!--
function vna(a1) // values and amounts (array)
{
a1.sort();
var a2 = new Array();
for(var i = 0; i < a1.length; i++)
{
if(typeof(a2[a1[i]]) == "undefined")
{
a2[a2.length] = a1[i];
a2[a1[i]] = 1;
}
else{a2[a1[i]]++}
}
var a3 = new Array();
for(var i = 0; i < a2.length; i++)
{
a3[a3.length] = a2[i];
a3[a3.length] = a2[a2[i]];
}
return a3;
}
Fruechte = new Array("Zitrone","Apfel","Birne","Zitrone","Zitrone","Apfel");
document.open("text/html");
document.write('<h1>' + vna(Fruechte).join(",") + '</h1>');
document.close();
//-->
</script>
Und wenn du willst, darfst du die Funktion vna auch in gleicheWerte umbenennen.
Gruß
Norbert