indexOf Switch

J'ai un Javascript bot pour un Xat chat qui agit également comme une IA. J'ai récemment décidé de refaire l'IA partie en raison de sa devient absolument massive de la chaîne de else if états, devenant presque impossible de travailler avec.

J'ai fait quelques recherches et est venu avec une nouvelle idée de la façon de traiter les réponses. Je vais vous donner le segment de code en premier:

function msgSwitch(id,msgRes) {
var botResponse = [];

switch (msgRes) {
  case (msgRes.indexOf("hi") !=-1):
    botResponse.push("HELLO. ");
  case (msgRes.indexOf("how are you") !=-1):
    botResponse.push("I AM FINE. ")
  case (msgRes.indexOf("do you like pie") !=-1):
    botResponse.push("I CAN'T EAT. THANKS, ASSHAT. ")
  default:
    respond (botResponse);
    spamCount(id);
    break;
}

}

L'idée ici est de vérifier msgRes (l'entrée de l'utilisateur) et de voir comment de nombreux cas, il correspond. Ensuite, pour chaque match, il va push de la réponse dans l' botResponse tableau, puis à la fin, il va répondre à tous les messages dans ce tableau.

Exemple

Utilisateur Msg: Hi! How are you?

msgRes: hi how are you

Bot Matches:

hi > pousse HELLO. à la matrice

how are you > pousse I AM FINE. à la matrice

Bot Répond: HELLO. I AM FINE.

Cette tour, me permet d'économiser la peine d'avoir à écrire un if pour chaque combinaison possible.

Cependant, lorsque l'on regarde un peu plus, je ne suis pas sûr si il est possible d'utiliser indexOf à l'intérieur d'un interrupteur. Personne ne sait d'une façon de contourner ce problème ou avez une meilleure idée pour le traitement des réponses de la même manière?

EDIT:

Pour Éviter la XY Problème (À préciser mon problème)

J'ai besoin d'une alternative propre à l'aide d'une énorme chaîne de else if consolidés. Il va y avoir des centaines de segments de parole que le bot va répondre. Sans la possibilité pour elle de garder à la recherche pour les matchs, je dois écrire une nouvelle else if pour chaque combinaison.

Je suis en espérant une méthode pour analyser chaque déclaration pour un match, puis de les combiner la réponse pour chaque match ensemble dans une seule chaîne.

EDIT 2:
Je dois également ajouter que c'est être couru sur Tampermonkey et pas un site web.

C'est totalement impossible. Utilisation else if.
Vous pourriez vouloir lire de nouveau sur la façon switch œuvres.

OriginalL'auteur Leaf | 2014-03-09