Array et multiples « orthographes »

Résolu/Fermé
Celio - 16 août 2020 à 22:37
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 17 août 2020 à 16:05
Bonsoir,

Je peine à trouver une solution pour déclarer des variables qui peuvent présenter de légères différences.

J’ai actuellement;

var fruits = [ ];
fruits [1] = « pommes »;
fruits [2] = « poires »;
fruits [3] = « bananes »;

J’aimerais pouvoir dire ;

var fruits = [ ];
fruits [1] = « pommes » ou « Pommes »;
fruits [2] = « poires » ou « Poires »;
fruits [3] = « bananes » ou « Bananes »;

Je ne parviens pas à exprimer ce ou.
Pouvez-vous m’aider ?

D’ores et déjà merci, et belle soirée à tous,

6 réponses

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
16 août 2020 à 22:51
Bonjour

je ne fais pas de javascript, mais à vue de nez un tableau de tableaux devrait répondre à ta question

var fruits = [["pommes", "Pommes"], ["Poires", "poires"]]


Après si le but est de "reconnaitre" pommes dans un texte orthographié de plusieurs façons, tu peux aussi, stocker des patterns de regex.
https://www.commentcamarche.net/contents/585-javascript-l-objet-regexp
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
16 août 2020 à 23:22
Bonjour,

Comme le dit whismeril ... il serait utile que tu nous expliques exactement dans quels cas tu veux utiliser tes variables.

Sachant que tu pourrais également utiliser un "objet" (json) au lieu d'un array
par exemple
  var fruits = {
      "1":["pomme","Pomme","pommes","Pommes","POMME","POMMES"],
      "2":["poirre","Poirre","poirres","Poirres","POIRRE","POIRRES"]
    };
  
  console.log("Fruits",fruits);
  console.log("Premier Fruit",fruits[1]);
  console.log("Second Fruit, pluriel =>",fruits[2][2]);

0
Bonjour à tous les deux,

Merci pour vos réponses et votre réactivité.

J'ai choisi la syntaxe ci-dessus (ma demande) car le code qui suit est ;

 var ladate = new Date(),
 nomfruits = fruits[ladate.getMonth()],
 nomfruits = fruits[ladate.getMonth()],


Ainsi, lorsque nous sommes au mois d'août, nomfruits renvoit à 7.

Pourvu que je n'écrive pas n'importe quoi. Aussi, si c'est du jquery, et non du javascript, je vous prie de m'excuser, je ne suis pas au point du tout avec ces notions.

D'ores et déjà merci une nouvelle fois pour votre précieuse aide.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 août 2020 à 08:11
je ne vois pas le rapport entre une date et le fait que tu veuilles pouvoir écrire le nom de tes fruits de différentes façons....

Je te précise également que jQuery... C'est du JavaScript.....
Et non... Le code que tu montres n'est pas en jquery je te rassure..
0
Merci pour ces éclaircissements.
Oui, je comprends, une histoires de fruits et de dates, c'est déroutant.

En fait, j'ai un champ dans lequel j'invite l'utilisateur à inscrire le nom d'un fruit (il répond à une question). Et je compare la valeur de ce que l'utilisateur a inscrit avec la réponse attendue. Pour le mois d'août, j'attends le résultat "cerise".

J'aimerais permettre plusieurs "orthographes" (en fait seulement une majuscule ou non en début de mot, et un espace ou non après le mot), je pensais donc dans mon code avoir ;

fruits[7] = "cerise" ou "cerise " ou "Cerise" ou "Cerise " ; 


Il y aurait bien d'autres approches pour résoudre tout cela, sans doute, mais mon intérêt dépasse ce seul exemple. J'aimerais vraiment pouvoir exprimer ce ou. Mais ce n'est peut-être pas possible.

J'espère que si ? :)
0
Je me rends compte que je pourrais effectivement suivre la piste de Whismeril en attrapant la valeur de mon champ et en lui appliquant un regex. Je devrais donc modifier cette ligne-là, si je suis bien ? ;

fruitsinput = $("#fruitsinput").val();
0
Pour les espaces, je pourrais simplement faire ainsi ;

fruitsinput = $("#fruitsinput").val().trim();


Mais quid des majuscules ?
0
Je suis navré, mon cheminement est lent, mais je pourrais faire ainsi ;

fruitsinput = $("#fruitsinput").val().trim().toLowerCase()


Y a-t-il une façon plus élégante d'écrire cette ligne de code ?

Merci encore à vous de m'avoir aidé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 août 2020 à 11:19
Regarde ça
  <input type="text" id="reponse">
  <button onclick="go()">Valider</button>
  <script>
  
  var fruits = {
      "1":["pomme","pommes"],
      "2":["poirre","poirres"]
    };
  
  console.log("Fruits",fruits);
  
  
  
  
  function go(){
    let rep = document.getElementById("reponse").value;
    rep = rep.trim();
    console.log(rep);
    //maintenant je veux comparer le réponse avec les pommes...
     let bonnesrep = fruits[1];
     console.log("bonnesrep",bonnesrep);
     console.log("Resultat",bonnesrep.indexOf(rep));
     if(bonnesrep.indexOf(rep) != -1){
      alert("bien");
     }else{
      alert("Non..");
     }
    
  }
  
  
  </script>

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 août 2020 à 11:24
A noter que si c'est pour faire un quizz ..... le langage javascript n'est pas le plus adapté.
N'importe qui sachant comment fonctionne un peu le web...est capable de regarder le code source de ta page... et donc de connaitre la bonne réponse à donner.
En général, pour des questionnaires/quizz... le traitement se fait côté serveur ( via du php par exemple).
mais le principe de vérification de la bonne réponse se fera de la même manière....
0
Merci bien pour toutes ces précisions, j'ai tout le nécessaire ainsi. C'est super.
Ce n'est pas un quizz. Et je comprends bien ce qui peut paraître dans le code source de la page, et ce qui ne doit pas y figurer. Merci toutefois de m'avoir mis en garde.

Par curiosité, la ligne suivante que j'avais écrite est problématique d'un point de vue purement "langagier" ?

fruitsinput = $("#fruitsinput").val().trim().toLowerCase()


Je marque de ce pas ma question comme résolue.

Merci encore.

Belle journée!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 août 2020 à 16:05
Aucun souci avec ta ligne
Mais je n'avais pas chargé jquery dans ma page de test
0