Je crée un jeu de quiz simple et j'ai du mal à calculer les résultats. Le problème est vraiment simple, j'ai besoin de savoir comment dire si clicked1
a une valeur supérieure à l'ensemble du dictionnaire dans lequel il se trouve, puis effectuez cette fonction. Voici le code du dictionnaire et la fonction que j'essaie de créer. Aussi, si quelqu'un pouvait expliquer pourquoi possibilités.value
ne fonctionne pas pour mon problème, ce serait très apprécié.
var possibilities = { 'clicked1': 0, 'clicked2': 0, 'clicked3': 0, 'clicked4': 0, }; function results(){ if (possibilities['clicked1'] > possibilities){ console.log("it worked"); } };
4 Réponses :
Il suffit de parcourir Object.values
avec chaque
:
var possibilities = { 'clicked1': 0, 'clicked2': 0, 'clicked3': 0, 'clicked4': 0, }; if (Object.values(possibilities).every(val => possibilities.clicked1 >= val || val == possibilities.clicked1)) { console.log("It works!"); }
Pas de problème @TheNuthouse, si ma réponse a résolu votre problème, assurez-vous de voter et de l'accepter.
Fonctionne bien, mais j'ai du mal à comprendre la syntaxe, je ne codifie avec JavaScript que depuis peut-être 2 semaines maintenant, veuillez expliquer si vous le pouvez, simplement en collant quelques notes par les parties importantes.
Vous pouvez utiliser chaque ()
. Vous pouvez également vérifier si la valeur maximale des valeurs d'objet en utilisant Math.max ()
et paramètres de repos
var ps = { 'clicked1': 4, 'clicked2': 1, 'clicked3': 2, 'clicked4': 3, }; if(Object.keys(ps).every(key => ps[key] <= ps.clicked1)){ console.log("worked") } //Second Method: //Object.values(ps) will return '[4,1,2,3]' And then using ... all values //are passed to function Math.max() single argument. and it will return the max value out of those and then compare that value with you desired value if(Math.max(...Object.values(ps)) === ps.clicked1){ console.log("Worked"); }
Voici une approche assez similaire à celle que vous aviez lors de votre tentative.
En gros, bouclez sur les clés et les valeurs du dictionnaire, en ignorant la valeur de la clé, 'clicked1':
let possibilities = { 'clicked1': 0, 'clicked2': 0, 'clicked3': 0, 'clicked4': 0, }; function result() { for (let key in possibilities) { if (key !== 'clicked1' && possibilities[key] >= possibilities['clicked1']) { return "it did not work"; } } return "it worked"; } console.log(possibilities); console.log("result() =", result()); possibilities['clicked1'] = 1; console.log(possibilities); console.log("result() =", result());
Une autre alternative est de vérifier si vous avez trouvé un élément supérieur à possibilités ["clicked1"]
. Si vous en avez trouvé une, vous saurez que possibilités ["clicked1"]
n'est pas la valeur maximale, sinon ce sera la valeur maximale parmi toutes les autres. Pour cette approche, nous pouvons utiliser Object.values ( ) pour obtenir un tableau de valeurs de votre objet, puis nous utilisons Array.some () pour effectuer la vérification mentionnée:
var possibilities1 = {'clicked1': 6, 'clicked2': 3, 'clicked3': 4, 'clicked4': 5}; var possibilities2 = {'clicked1': 3, 'clicked2': 3, 'clicked3': 4, 'clicked4': 5}; function results(ps) { let found = Object.values(ps).some(x => x > ps['clicked1']); found ? console.log("not worked") : console.log("worked"); }; results(possibilities1); results(possibilities2);
Voulez-vous vérifier si
clicked1
est supérieur au nombre de propriétés danspossibilités
?Je veux savoir si «clicked1» est supérieur à la valeur de «clicked2», 3, 4 etc.