Avatar billede EveryMA Mester
08. juni 2018 - 17:47 Der er 6 kommentarer

Finde mest brugte ord i text input

Hej

Jeg har forsøgt at finde noget på google uden held.
jeg skal have hjælp til et javascript der finder det mest brugte ord / sætning i et text input samtidig med at man skriver i feltet.

svarende til at jeg skriver i dette text input lige nu så skal der under text inputtet være en tekst der opdateres "live" mens jeg skriver for at fortælle mig hvilket ord der hyppigst bliver brugt

nogle der kan guide mig i en retning ?
Avatar billede claes57 Ekspert
08. juni 2018 - 19:43 #1
din rutine skal starte med at gemme bogstaver efter et .,;: eller mellemrum, og så skal du ikke begynde at teste noget før du igen rammer et af de 5 tegn. Ellers ville e er der mer osv vises hele tiden, og det er ikke nødvendigvis ord. Når du så har et afsluttet ord, så lcase det, og optæl det i din samlede lcase(tekst) - er der flere end det tidligere ord (du har gemt en tæller, som initielt er 0)  så vis ord, og opdatér tælleren. Ved at starte tæller på 0, så vil det første ord vises, og kun hvis man fx skriver "her er så flere ord, som der så læses" vil 'så' optræde efter 'her'.
Avatar billede claes57 Ekspert
08. juni 2018 - 19:47 #2
og pas på med ord - når du optæller, hvor mange ord der er af fx 'er', så skal 'heller' ikke tælles med, da der ikke er et af de 5 sluttegn både før og efter
Avatar billede softspot Forsker
08. juni 2018 - 19:51 #3
Lowercase teksten, split den derefter på mellemrum og sorter så alle ordene. Gennemløb den sorterede liste og tæl hvormange der er af den aktuelle forekomst og gem den der har flest indtil videre. Til sidst må du stå med det ord der har hyppigst forekomst...
Avatar billede claes57 Ekspert
08. juni 2018 - 20:10 #4
softspot - det bliver nok en kortere rutine, end den jeg lagde ud med - bare husk, at .,:; skal erstattes med mellemrum før split - og så igen, at rutinen først kaldes ved et sluttegn.
Avatar billede EveryMA Mester
17. juni 2018 - 22:44 #5
Tak for svar. Jeg er bare ikke så grundlæggende stærk i js at jeg bare kan kaste mig ud i at programmere det. jeg kan redigere og tilrettelægge det men ikk' starte det fra bunden.

har søgt en del på google uden held  , måske kan i finde noget der kan lede mig afsted ?
Avatar billede softspot Forsker
18. juni 2018 - 08:09 #6
Du kan prøve dette. Der er givetvis basis for en masse optimering, men det skulle da give en idé om, hvordan du får hul på opgaven.

<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<textarea id="txt" style="width:400px;height:200px">Jeg skriver en lille tekst for at se om der kommer nogle ord som går igen igen og for at se om det giver mening, når man skriver i et tekstfelt. Så jeg skriver lige igen igen, igen for at konstatere at igen faktisk er det ord der forekommer mest i min tekst.
I øjeblikket ser det ud til at være tilfældet, men det kan være ordet bliver overhalet af andre ord, som også kan tænkes at forekomme hyppigere end igen gør, det kunne f.eks. være at, som også forekommer ofte i denne tekst.</textarea>
<div id="dbg"></div>
<script>
document.getElementById("txt").focus();
document.getElementById("txt").addEventListener("keyup", function(e) {
  var sortedList = e.target.value
        .toLowerCase()
        .split(/[\s\.\,\;\:]+/g)
        .filter(function(i) {
          return !(/^(at|det|en|et|i|og|også|som)$/gi).test(i);
        })
        .sort();

  var most = "",
      mostCnt = 0,
      current = "",
      currentCnt = 0;

  for(var i = 0, l = sortedList.length; i < l; i++) {
    if(sortedList[i] != current) {
      if(most == "" || currentCnt > mostCnt) {
        most = current;
        mostCnt = currentCnt;
      }
      current = sortedList[i];
      currentCnt = 0;
    }
    currentCnt++;
  }

  document.getElementById("dbg").innerHTML = most + ": " + mostCnt;
});
</script>
</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester