Wie kann man mit JavaScript eine ausgeschriebene Zahl wie "drei" ebenso erkennen wie "3"?

1 Antwort

Klar :) Das geht aber leider nicht direkt dynamisch (für jede Zahl im Universum), beziehungsweise müsstest du dafür ein wenig komplizierter vorgehen als ich dir jetzt zeige, bei Interesse aber einfach fragen. Wenns aber erstmal nur um eine bestimmte Menge von Zahlen geht, 0-9? würde man es vielleicht so machen:

Ein Objekt definieren was Attribute enthält die so heißen wie die ausgeschriebene Zahlen die jeweils als Wert die eigentliche Zahl enthalten. Also so:

let zahlen = {
 eins: 1,
 zwei: 2,
 drei: 3
 etc.
}

Jetzt kannst du für einen Text, falls er denn gleich ist wie einer dieser Zahlen so den Wert holen: 

function getValueOfString(eingabe){
let wert = zahlen[eingabe];
if(wert)
 return wert;
else
 return null;
}

Und das wars auch schon. Man kann in Javascript auf Attribute eines Objekts zugreifen in dem man diesen Zugriff verwendet objekt[attributName]. Das nutzen wir in dem Fall aus um den Wert zu bekommen. Die Abfrage am Ende ist lediglich da um bei falsch eingegebener Zahl sicher zu sein das null zurückgegeben wird statt undefined. Stell ruhig fragen wenn du welche hast :)

Fragantherr 
Fragesteller
 06.11.2016, 10:39

Danke dafür! Wie binde ich denn die function in meine Textabfrage ein? (Bis jetzt nur mit ParseInt, was ja hier nicht mehr funktionieren kann)

0
Berny96  06.11.2016, 10:45
@Fragantherr

Ich würde ca so vorgehen dass man zuerst versucht die Funktion anzuwenden und danach parseInt, wenn beides nichts zurückliefert hat der Nutzer etwas falsches eingegeben. Also ca so:

let eingegebeneZahl = getValueOfString(eingabe);
if (!eingegebeneZahl)
  eingegebeneZahl = parseInt(eingabe);
if(eingebeneZahl)
 //Richtige Eingabe
else
 //Fehlerhafte Eingabe



0