如何在javascript中给变量一个随机值

时间:2013-12-04 15:14:17

标签: javascript random

如何在javascript中为变量提供随机值?

我可以这样做:

var myMake = ["Chevy","Subaru","Kia","Honda","Toyota"];

var x = Math.floor(Math.random() * 4 + 1);

var rand = myMake[x];

alert(rand);

获得所需的效果,为变量rand提供以下其中一个的随机值:

雪佛兰,斯巴鲁,起亚,本田,丰田

但是有没有办法制作一个像这样的函数/方法?:

var rand = randVal("Chevy", "Subaru", "Kia", "Honda", "Toyota");

谢谢!

3 个答案:

答案 0 :(得分:5)

function randVal(){
  var x = Math.floor(Math.random() * arguments.length);
  return arguments[x];
}

arguments是一个类似于对象的数组,它引用了一个函数的所有提供参数的列表。

答案 1 :(得分:0)

只是为了与众不同!

var x = ["Chevy","Subaru","Kia","Honda","Toyota"].sort(function() {
   return 0.5 - Math.random();
})[0];

alert(x);

jsfiddle

作为一项功能,但接受Array

var randMe = function ( me ) {
    if ( me ) {
        return me.sort(function() {
          return 0.5 - Math.random();
        })[0];
    }
}

alert(randMe(['a','b','c']));

jsfiddle

还有一些原型设计

Array.prototype.rand = function() { 
   return this.sort(function() {
     return 0.5 - Math.random();
   })[0];
}

alert(['a','b','c'].rand());

jsfiddle

here的实际随机播放功能。

答案 2 :(得分:-4)

使用jQuery可以很容易地做到这一点:

(function($) {
    $.rand = function(arg) {
        if ($.isArray(arg)) {
            return arg[$.rand(arg.length)];
        } else if (typeof arg === "number") {
            return Math.floor(Math.random() * arg);
        } else {
            return 4;  // chosen by fair dice roll
        }
    };
    })(jQuery);

    var items = ["Chevy","Subaru","Kia","Honda","Toyota"];
    var item = $.rand(items);