Je crée plusieurs tableaux et chaque matrice est différent de l'autre. Je veux prendre un certain nombre d'utilisateurs et en fonction de ce numéro, la fonction doit choisir une matrice correcte, mais je déclare les noms des tableaux en fonction de la possibilité possible de l'utilisateur de l'utilisateur. Comme il existe des RPS1 et RPS2, il s'agit de deux matrices différentes et si l'utilisateur entrez 1, la fonction doit renvoyer RPS1. Je l'ai déjà fait avec si sinon de choses, mais y a-t-il un raccourci pour faire cela parce que je vais ajouter beaucoup plus de tableaux. (Désolé pour une mauvaise explication, c'est ma première fois dans cette communauté)
function DecisionArrays(i) {
var RPS0 = ['Rock', 'Paper', 'Scissors'];
var RPS1 = ['Rock', 'Paper', 'Scissors', 'Lizzard'];
var RPS2 = ['just', 'over', 'crowd'];
var RPSi;
if( i == 0 ) {
RPSi = RPS0;
} else if(i==1){
RPSi = RPS1;
} else {
RPSi = RPS2;
}
return(RPSi);
}
6 Réponses :
Vous pouvez faire
function DecisionArrays(i) {
var RPS = [];
RPS.push(['Rock', 'Paper', 'Scissors']);
RPS.push(['Rock', 'Paper', 'Scissors', 'Lizzard']);
RPS.push(['just', 'over', 'crowd']);
return RPS[i]
}
Vous manquez la branche "Par défaut".
Je suis en désaccord, dans la question, il n'y avait aucune demande de réponse par défaut. Dans ce cas, tout index sortant de la matrice définie reviendra non défini, ce qui est un résultat beaucoup plus significatif IMHO pour un cas comme celui-ci
Si c'est "plus significatif" i> ou non une décision que OP doit faire. Mais code OPS renvoie clairement rps2 code> lorsque i code> n'est pas zéro ou un, d'où lorsque vous appelez prise de décision code> avec 324 code> retournera également rps2 code>
L'OP est clairement un débutant qui n'a probablement pas pensé à cette affaire. Je vais éditer ma réponse pour le faire comprendre ce que je pense être une erreur de jugement
Merci d'un autre point de vue à propos de ce problème Francesco di Stefano: D Je suis jolie nouvelle ici et la prochaine fois que je vais expliquer la situation plus claire.
Il suffit de créer une matrice de tableaux, vous obtiendrez une matrice requise par index
Vous manquez la branche "Par défaut".
@Andreas, pourriez-vous expliquer ce que cela signifie?
rps2 code> sera renvoyé lorsque i code> n'est pas zéro ou un. Je ne sais pas pourquoi OP veut la "dernière" option dans tous les cas autres que i == 0 code> ou i == 1 code>, mais le code "Working" fait exactement cette.
@Andreas, non, ce n'est pas par défaut, il n'a que de sens sans signification si sinon la construction écrit la dernière condition
"sans signification" i> ou non, c'est dans le code de travail de OP. DecisionAry (234) Code> Retours RPS2 code> avec code OPS, mais non défini code> avec votre code.
Donc, mon code fonctionne plus correctement que le code OP, évidemment, décision (234) devrait renvoyer indéfini, pas le dernier article
"Alors mon code fonctionne plus correctement" i> - cela pourrait être le cas, ou cette déclaration pourrait simplement être cohérente. Le code OPS a une valeur par défaut (laquelle BTW. Est absolument un cas d'utilisation légitime, alors pourquoi pensez-vous "évidemment de la décision (234) devrait renvoyer indéfini" i>), le vôtre n'a pas. C'est tout ce que j'ai dit.
Merci pour votre contribution Dmitry Reutov
function DecisionArrays(i) {
var RPS0 = ['Rock', 'Paper', 'Scissors'];
var RPS1 = ['Rock', 'Paper', 'Scissors', 'Lizzard'];
var RPS2 = ['just', 'over', 'crowd'];
var all = { RPS0, RPS1, RPS2 };
return all[`RPS${i}`]
}
console.log(DecisionArrays(2)); Comme @andreas suggéré, vous pouvez utiliser ou si vous avez besoin d'un peu plus de contrôle sur tableau de tableaux code>: i code> TAT provient de l'utilisateur, utilisez objet code>: p>
Je ne peux pas comprendre l'existence de 11 12 13 numéros. Pourriez-vous m'éclairer?
C'est juste un exemple, disons que vous avez, pour une raison quelconque, la réponse de vos utilisateurs n'est pas des numéros séquentiels, mais également des spécifiques, comme 11, 12, 13.. Ensuite, si vous créez une array et insérez à l'index 11 un élément, puis vous "LL Obtenez 10 valeurs vides (non définies) avant elle (index 0-10), ce qui peut conduire à des résultats inattendus.
Je ne connais pas des détails de votre application, mais il est courant d'utiliser des dizaines ou même des centaines lorsque vous comptez quelque chose, d'avoir suffisamment d'espace pour jouer si vous devez ajouter une nouvelle option. À titre d'exemple: si vous faites une sorte de système de billetterie et que vous voulez laisser l'utilisateur choisir de la liste des problèmes courants, vous souhaitez probablement utiliser tous les problèmes de compte 100 + ID du problème, puis pour la facturation, l'ID 200 +, Et ainsi de suite, et même si vous n'avez que 3 articles pour des centaines de centaines de centaines (101, 102, 103), vous aurez 96 "emplacements" pour ajouter un autre problème à cette liste à l'avenir.
Projet que pour commenter précédent et que vous verrez quelles avantages peuvent "objecter" l'utilisation de vous donner.
Il y a des moyens plus efficaces de le faire, mais je ne l'appellerais pas un raccourci comme par exemple. La beauté de JavaScript est qu'il y a de nombreuses façons de faire la même chose.
Comment je l'aurais fait est: p>
Merci M. Simmons
L'instruction code> Switch code> pourrait également être une option:
function DecisionArrays(i) {
var RPS0 = ['Rock', 'Paper', 'Scissors'];
var RPS1 = ['Rock', 'Paper', 'Scissors', 'Lizzard'];
var RPS2 = ['just', 'over', 'crowd'];
switch(i){
case 0: return RPS0;
case 1: return RPS1;
default: return RPS2;
}
}
"mais y a-t-il un raccourci pour faire cela" i> - oui, un tableau.
[['Rock', 'Paper', 'Ciseaux'], ['Rock', 'Paper', 'Ciseaux'], ...] Code>Ouais c'est une façon, mais je veux déclarer RPS1 RPS2 ... avec une boucle ou quelque chose comme ça ou je me trompe à un moment donné (de manière logique)?
Au fait, merci de répondre andreas.