javascript 如何从数组中返回随机值?

nhhxz33t  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(132)

我正在使用jQuery validate插件,希望在成功时返回一个随机值。
现在我试着用途:

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())

然后在需要输出所用值的位置:

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

这将选择一个随机值,但对每个成功消息使用相同的值,而不是为每个字段选择不同的值。

2wnc66cl

2wnc66cl1#

您可以存储messages数组并计算消息以在执行时显示,如下所示:

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

Give it a try here,然后在.text()调用中调用getMessage,如下所示:

label.addClass("valid").text(getMessage());
dfty9e19

dfty9e192#

我们可以将Method添加到Array。

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

messages.getRandomVal();
mm9b1k5b

mm9b1k5b3#

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
         });
o3imoua4

o3imoua44#

选择数组的随机元素的一种简洁方法是使用按位OR而不是Math。floor这是因为按位运算将导致数字的小数部分被丢弃,从而实现与Math.floor完全相同的结果()。运算符优先意味着位运算发生在乘法之后。与零进行位OR不会影响原始数字,只是现在小数部分没有了。

const arr = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"]

const randomElement = arr[Math.random() * arr.length | 0]

console.log(randomElement)

相关问题