2013-09-25 3 views
0

J'ai plusieurs fonctions de 1 à n et je veux les appeler aléatoirement.Comment appeler des fonctions de manière aléatoire.

function answer1(); 
function answer2(); 
function answer3(); 
function answer4(); 

Ces fonctions contiennent des lignes de code.

Je veux les appeler de manière aléatoire. Le numéro de la fonction est donc généré de façon aléatoire.

J'ai essayé de l'appeler ainsi, mais il did't travail:

answer(randomNum)(); 
(answer(randomNum))(); 
+0

Vous pourriez essayer d'utiliser 'if's. Quelque chose comme 'if (randomNum == 1) {answer1(); } else if (randomNum == 2) {réponse2(); } ... '' – jonhopkins

Répondre

1

Vous pouvez mettre les fonctions dans un tableau:

var functions: Array = [ 
    answer1, 
    answer2, 
    answer3, 
    answer4 
]; 

les appeler ensuite comme ceci:

functions[randomNum](); 
+0

thx beaucoup c'était le plus simple à implémenter –

1

Vous pouvez essayer quelque chose comme ceci:

var _functions:Vector.<Function> = new Vector.<Function>; 
_functions.push(func1,func2,.....);//add all the functions here 

var _rand:int = Math.round(Math.random()*_functions.length);//this gives a random number between min and max value, 0 - min, _functions.length - max 
_functions[_rand].call(); //or just _functions[_rand]() 
+0

La ligne où vous obtenez le nombre aléatoire m'a curieux de savoir pourquoi vous avez senti le besoin de commencer en ajoutant '0' et en soustrayant' 0' de '_function .length'. – prototypical

+0

@prototypical Je viens de copier la fonction pour rand min-max, et de remplacer les variables - n'a pas remarqué que l'une des variables est 0 :) – GeorgeCross

+0

En tapant comme int, vous n'avez vraiment pas besoin d'arrondir. 'Math.random() * _ functions.length' fonctionnera très bien, donc arrondir ne fait vraiment rien. – prototypical

Questions connexes