Une autre manière de générer un mot ? [Résolu]

Signaler
Messages postés
207
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
3 juillet 2020
-
Messages postés
207
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
3 juillet 2020
-
Bonjour à toutes et à tous,

J'apprends à coder en javascript, je ne suis pas très à l'aise avec ça pour l'instant
J'essaie aujourd'hui d'apprendre à coder un générateur de mot et je m'interroge sur les différentes manières d'y parvenir

J'utilise Brackets avec 2 fichiers, un fichier html et un fichier js de manière à pouvoir afficher le résultat dans la console d'une page internet

Voici mon code js, je l'ai commenté pour vous faire part de ce à quoi je pense, au cas où, cependant il fonctionne pour ce que je veux faire :
function champLexHab(){
    var hasard = Math.floor(Math.random()*11);
/* je génère un chiffre / nombre compris entre [0 et 10] (avec l'arrondi à l'entier inférieur) */

    var listeDeMots = ['maison', 'appartement', 'porte', 'fenêtre', 'chaise', 'cheminée', 'escalier', 'cuisine', 'salle de bain', 'chambre', 'couloir'];
    return(listeDeMots[hasard])
/* le chiffre / nombre généré correspond à la position dans la liste de mots précédemment établi et l'attribut return met le mot en évidence */
}
var result = champLexHab();
console.log(result);

J'ai créé cette question pour savoir s'il n'existe pas une autre manière de coder ça, sans les calculs. Je l'ai codé comme ça précédemment car je ne connais que math.random pour intégrer de l'aléatoire.

On ne pourrait pas faire quelque chose dans ce style là :
function champLexHab(){
    random(a||b||c||d||e||f||g||h||i||j||k)
    return(random(a||b||c||d||e||f||g||h||i||j||k))
}
var a = 'maison';
var b = 'appartement';
var c = 'porte';
var d = 'fenêtre';
var e = 'chaise';
var f = 'cheminée';
var g = 'escalier';
var h = 'cuisine';
var i = 'salle de bain';
var j = 'chambre';
var k = 'couloir';
var result = champLexHab();
console.log(result);


EDIT : Ajout des balises de code

Avec un attribut (je ne suis même pas sûr que l'on nomme ça comme ça) quelque-chose.random qui ne ferait que choisir au hasard un variable que l'on défini par la suite. C'est d'abord comme ça que j'ai pensé mon code, est-ce que ça serait possible ?

3 réponses

Messages postés
28861
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 juillet 2020
2 590
Bonjour,

Pour faire de l'aléatoire, il n'y a rien d'autre que le math.random
var listeDeMots = ['maison', 'appartement', 'porte', 'fenêtre', 'chaise', 'cheminée', 'escalier', 'cuisine', 'salle de bain', 'chambre', 'couloir'];
var randomItem = listeDeMots[Math.floor(Math.random()*listeDeMots.length)];

Messages postés
207
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
3 juillet 2020
25
Très bien, merci pour ta réponse, pour les edit et pour la correction (var randomItem) :)
Existe-t-il un site qui répertorie tous les objets et les fonctions existant·e·s en javascript ? Une sorte d'abécédaire ?
Messages postés
28861
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 juillet 2020
2 590
Aucune idée
Lorsque j'ai besoin d'un truc... J'utilise google...
En plus ça me permet de découvrir des librairies ou des méthodes que je ne connais pas (vu qu'il y a régulièrement des nouveautés dans la syntaxe, les méthodes...)
L'idéal étant de faire ses recherches en anglais...pour maximiser les chances de trouver
Salut,
oui il y a 2 sites(certainement beaucoup plus) qui listent les instructions en JS.

chez Mozilla qui est un acteur du développement de JavaScript:
https://developer.mozilla.org/fr/docs/Web/JavaScript

et auprès du W3C responsable des normes web:
https://www.w3schools.com/js/DEFAULT.asp

Mais bon une simple recherche sur la méthode "random" de l'objet "Math" vous aurait pris moins de temps que de poster votre message pour comprendre comment ça marche...surcharger votre cerveau sur des fonctions dont vous ne connaissez pas le rôle ou l'utilisation vous apportera pas grand chose.
Simplement une recherche sur la fonction/méthode lorsque vous en avez besoin sera plus efficace(ou y êtes confronté dans une leçon).

Bien sûr un autre outil pour comprendre JavaScript c'est de parler l'anglais: les instructions étant toutes en anglais ou abrégée de l'anglais ça donne déjà une idée de ce à quoi elles servent( random= aléatoire = donne un nombre aléatoire ). Une autre chose aussi est de savoir différencier les méthodes, fonctions d'un test logique et des arguments d'une fonction/méthode...dans votre exemple vous mettez un test en argument d'une méthode, hors la méthode random n'a pas d'argument possible et même si c'était le cas pour qu'un test renvoie une valeur il faut biaiser comme avec l'écriture ternaire.

var test='blabla';//true;//-- mettre à true pour afficher "la valeur est vraie"
var valeur=  test===true?'est vraie':'est faux';
alert('la valeur '+valeur);
/* ce qui revient au même qu'un test SI/SINON normal mais en plus court et plus élégant à écrire
var valeur;
if(test===true){
valeur="est vraie";
}else{
valeur='est faux';
}
*/


ou en JavaScript6 et > c'est possible de créer une fonction avec un argument par défaut comme ceci:

let maFonction= function(argumentA, argumentB='la lettre B'){
alert(argumentA+' et '+argumentB);
}

maFonction('la lettre A');
//--ALERT affichera: 'la lettre A et la lettre B'
maFonction(22,'voilà les bleus');
//--ALERT affichera: '22 et voilà les bleus'


Du moment que vous comprenez qu'en JS tout est fonction : les objets sont des fonctions , les fonctions ont pour constructeur l'objet Function , donc tout est objet surtout les fonctions vous avez compris l'essentiel de JS.
Par exemple:12 est un objet Number et '12' un objet String comme montré ici, donc les valeurs elles mêmes sont des fonctions/objets instanciés à leur création.

console.log(typeof 12);
//number o uinstance de l'objet Number
console.log(typeof '12');
//string ou instance de l'objet String
console.log(typeof Function);
//function ou instance de l'objet Function
console.log(typeof Object);
//function ou instance de l'objet Function

// mais par contre:
console.log(typeof Object.create(null));
//Object car instance de l'objet Object lui même instance de Function
Messages postés
207
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
3 juillet 2020
25
Ok, merci beaucoup pour tous ces éléments
Ces 2 sites vont je pense beaucoup m'aider car pour l'instant j'ai le sentiment d'être face à une masse sans savoir pour où l'aborder, sans savoir comment parvenir à mes fins. Je suppose que c'est une sorte de méthode de penser que je n'ai pas (encore)

Oui j'ai compris que les instructions sont en anglais, j'ai un niveau basique, cependant je ne suis pas suffisamment à l'aise pour comprendre ce qui peut se dire dans des forums anglais. Pour l'instant, pour moi le code c'est du concept et aborder un concept dans une langue avec laquelle je ne suis pas à l'aise c'est difficile