Ich habe einen Javascript-basierten Bot für einen Xat-Chatraum, der auch als KI fungiert. Ich habe mich kürzlich dazu entschlossen, den AI-Teil zu wiederholen, da er zu einer absolut massiven Kette von else if
-Aussagen wird, mit der es fast unmöglich wird, damit zu arbeiten.
Ich habe etwas recherchiert und eine neue Idee entwickelt, wie ich mit Antworten umgehen soll. Ich gebe dir zuerst das Codesegment:
%Vor% Die Idee hier ist, msgRes
(die Eingabe des Benutzers) zu überprüfen und zu sehen, in wie vielen Fällen es übereinstimmt. Dann wird für jede Übereinstimmung push
die Antwort in das botResponse
-Array übernommen und am Ende antwortet sie mit allen Nachrichten in diesem Array.
Beispiel
Benutzer-Msg: Hi! How are you?
msgRes: hi how are you
Bot-Treffer:
hi
& gt; schiebt HELLO.
auf Array
how are you
& gt; schiebt I AM FINE.
auf Array
Bot antwortet: HELLO. I AM FINE.
Das wiederum erspart mir die Mühe, für jede mögliche Kombination eine if
schreiben zu müssen.
Nachdem ich jedoch ein wenig mehr darüber gelesen habe, bin ich mir nicht sicher, ob es möglich ist, indexOf
in einem Switch zu verwenden. Kennt jemand einen Weg um dies oder eine bessere Idee für den Umgang mit Antworten auf die gleiche Weise?
BEARBEITEN:
Um das XY-Problem zu vermeiden (um mein Problem zu verdeutlichen)
Ich brauche eine saubere Alternative zur Verwendung einer massiven Kette von else if
-Anweisungen. Es wird Hunderte von Wortsegmenten geben, auf die der Bot antworten wird. Ohne die Möglichkeit, nach Übereinstimmungen zu suchen, müsste ich für jede Kombination ein neues else if
schreiben.
Ich hoffe auf eine Möglichkeit, dass es jede Anweisung nach einer Übereinstimmung durchsucht und dann die Antwort für jede Übereinstimmung in einer einzigen Zeichenfolge kombiniert.
EDIT 2: Ich sollte auch hinzufügen, dass dies auf Tampermonkey läuft und keine Webseite.
Meine zwei Cent für den Kern dessen, was Sie versuchen zu tun:
%Vor%Meiner Meinung nach ist es einfacher, dieses Programm zu ändern, da Sie den Seed nur bearbeiten müssen, wenn Sie in Zukunft mehr Antworten haben. Sie können sogar den Seed in einer JSON-Datei speichern und sie (über Ajax) lesen, so dass das Programm nicht geändert werden muss, wenn weitere Nachrichten vorhanden sind.
Sie müssen nur mit "true" anstelle von "msgRes" vergleichen (da Fälle === Vergleich verwenden) und "break" verwenden, um das lästige Fallen des Switch-Verhaltens zu verhindern:
%Vor% Dies ist ein perfekt gültiges logisches Verzweigungsmuster, das als "überlasteter Schalter" bezeichnet wird. Viele Leute wissen vielleicht nicht, dass jedes case:
ein Ausdruck ist, nicht nur ein Wert, also könntest du sogar ein IIFE bei Bedarf einfügen ...
Tags und Links javascript switch-statement tampermonkey