Top-Funktion in Text oder Array

  • Moin,

    gestern brauchte ich eine Funktion, die mir die Topwerte aus einem Array ausgibt.
    Leider habe ich sowas trotz meines Freundes Google nicht gefunden.
    Da mein Array aber dann auf einmal ein String wurde, brauchte ich noch ne andere Funktion ^^

    Langer Rede, kurzer Unsinn:

    Gegeben: array["20pt","24pt","20pt","30pt","20pt","24pt"]
    Ergebniss array[ ["20pt",3], ["24pt",2], ["30pt",1] ]

    Und das ganze machen folgende Funktionen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Func TopWordCount($sTextToCount,$sDelimiter=" ")
    Local $aTokens, $n
    $aTokens=StringSplit($sTextToCount,$sDelimiter,2)
    If Not IsArray($aTokens) Then Return ""
    $aTokens=_ArrayUnique($aTokens,1,0,1)
    Local $aRetTopWordCount[$aTokens[0]][2]
    For $n=1 To $aTokens[0]
    StringReplace($sTextToCount,$aTokens[$n],"",0,1)
    $aRetTopWordCount[$n-1][1]=@extended
    $aRetTopWordCount[$n-1][0]=$aTokens[$n]
    Next
    _ArraySort($aRetTopWordCount,1,0,0,1)
    Return $aRetTopWordCount
    EndFunc ; ==> TopWordCount

    [/autoit] [autoit][/autoit] [autoit]

    Func TopArrayCount($aArrayToCount)
    Return TopWordCount(_ArrayToString($aArrayToCount),"|")
    EndFunc

    [/autoit]
  • Ich würde das die Array-Elemente in Integer umwandeln und _ArraySort() verwenden.

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $aGegeben[7] = ["20pt", "24pt", "20pt", "30pt", "20pt", "24pt", "200pt"]

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($aGegeben) - 1
    $aGegeben[$i] = Int($aGegeben[$i])
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArraySort($aGegeben, 1)
    _ArrayDisplay($aGegeben)

    [/autoit]
  • _ArrayMax gibt leider nur den höchsten Wert. Ich brauch aber den Wert, der am Häufigsten (MySQL-Funktion TOP) vorkommt.

    funkey: Ok, mein Beispiel war schlecht. Mein "Orginal"-Array enthält auch noch Wörter, die dann mit INT() eine 0 geben würden, was dann unweigerlich auf Platz 1 landen würde.

  • Hmpf... genau das ist es, was ich suchen wollte....
    Leider hab ich "Array" und "Top" (zu sehr SQL-Geschädigt) und nicht nach Modal gesucht.
    Nagut, nun gibts die Funktion 2mal.