Bonsoir à tous,
J'ai écrit un code très simple qui permet de suggérer des titres d'oeuvre lorsque l'on entre des mots-clefs dans un champ texte. J'ai placé les noms d'auteurs dans un objet et attribué à chacun d'eux une array avec une liste d’œuvres. Une fonction vérifie que le mot-clef existe dans le "dictionnaire" et choisit un titre au hasard dans l'array qui lui est associée.
Le problème c'est qu'il faut entrer le nom complet de la valeur pour que ça marche (par ex : "Baudelaire Spleen et idéal") au lieu de pouvoir entrer simplement l'un ou plusieurs des mots-clefs qu'elle contient (juste "spleen" ou "Baudelaire spleen" par exemple).
J'ai réussi grâce à la méthode indexOf, mais seulement en l'utilisant avec des conditionnelles directement intégrées à la fonction, ce qui alourdit énormément le code (et rend presque impossible l'élaboration d'une grande base de données).
Je cherche donc à garder le dictionnaire séparé de la fonction comme dans le fiddle mais en arrivant cette fois à autoriser la correspondance même si seulement l'un ou plusieurs des mots-clefs est entré dans le champ texte (au lieu du libellé complet).
Du coup, quelle méthode serait adaptée dans mon cas ? Est-il possible d'utiliser la méthode indexOf dans avec un objet ?
Si quelqu'un a une idée, je lui serais très reconnaissante ;D
Merci!
http://jsfiddle.net/tttjrq9d/2/
Modifié par balleronde (17 Sep 2016 - 10:09)
J'ai écrit un code très simple qui permet de suggérer des titres d'oeuvre lorsque l'on entre des mots-clefs dans un champ texte. J'ai placé les noms d'auteurs dans un objet et attribué à chacun d'eux une array avec une liste d’œuvres. Une fonction vérifie que le mot-clef existe dans le "dictionnaire" et choisit un titre au hasard dans l'array qui lui est associée.
Le problème c'est qu'il faut entrer le nom complet de la valeur pour que ça marche (par ex : "Baudelaire Spleen et idéal") au lieu de pouvoir entrer simplement l'un ou plusieurs des mots-clefs qu'elle contient (juste "spleen" ou "Baudelaire spleen" par exemple).
J'ai réussi grâce à la méthode indexOf, mais seulement en l'utilisant avec des conditionnelles directement intégrées à la fonction, ce qui alourdit énormément le code (et rend presque impossible l'élaboration d'une grande base de données).
Je cherche donc à garder le dictionnaire séparé de la fonction comme dans le fiddle mais en arrivant cette fois à autoriser la correspondance même si seulement l'un ou plusieurs des mots-clefs est entré dans le champ texte (au lieu du libellé complet).
Du coup, quelle méthode serait adaptée dans mon cas ? Est-il possible d'utiliser la méthode indexOf dans avec un objet ?
Si quelqu'un a une idée, je lui serais très reconnaissante ;D
Merci!
http://jsfiddle.net/tttjrq9d/2/
Modifié par balleronde (17 Sep 2016 - 10:09)