Come posso restituire un valore casuale da un array?

Sto usando il plugin jQuery validate e mi piacerebbe restituire un valore casuale in caso di successo.

In questo momento sto cercando di usare:

var success_message = new Array (); success_message[0] = "Good!"; success_message[1] = "Ok!"; success_message[2] = "Great!"; success_message[3] = "Perfect!"; success_message[4] = "Nice!"; success_message[5] = "Awesome"; var i = Math.floor(5*Math.random()) 

Quindi, dove ho bisogno di produrre il valore che utilizzo:

  $(document).ready(function(){ var validator = $(".contactform").validate({ success: function(label) { label.addClass("valid").text(success_message[i]) } }); //end form validate code }); 

Questo seleziona un valore casuale ma utilizza lo stesso valore per ogni messaggio di successo invece di selezionarne uno diverso per ogni campo.

È ansible memorizzare la matrice dei messages e calcolare il messaggio da mostrare mentre si va, in questo modo:

 var messages = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"]; function getMessage() { return messages[Math.floor(Math.random() * messages.length)]; } 

Fai un tentativo qui , quindi chiama getMessage nella tua chiamata .text() , in questo modo:

 label.addClass("valid").text(getMessage()); 
 function sucess() { message = ["Good!","Awesome!","Super!","Nice!","Great!"]; return message[Math.floor(Math.random() * message.length)]; } $(document).ready(function(){ var validator = $(".contactform").validate({ ... success: function(label) { label.addClass("valid").text(success()); } }); //end form validate code }); 

Possiamo aggiungere il metodo alla matrice.

 Array.prototype.getRandomVal = function(){ return this[Math.floor(Math.random()*this.length)]; }; messages.getRandomVal();