随机化一个由3个id数组组成的数组

时间:2013-06-12 21:49:32

标签: jquery random

我正在尝试在一个数组中随机化一组3个数组,然后使用从随机化中选择的ID设置链接,很难解释但希望我的代码可以帮助您理解我正在尝试做的事情:

var options = { 
    option1: ["#boss", "#esprit", "#escada"],
    option2: [ "#esprit","#boss", "#escada"],
     option3: ["#escada",  "#esprit", "#boss" ]
};

var randomOption = options[Math.floor(Math.random() * 3 )];

    $("a.test1").attr("id", randomOption[0])
    $("a.test2").attr("id", randomOption[1])
    $("a.test3").attr("id", randomOption[2])

此代码不起作用,任何想法我需要做什么?

感谢。

2 个答案:

答案 0 :(得分:1)

如果要使用随机数进行索引,则应创建一个二维数组。

var options = [
    ["#boss", "#esprit", "#escada"],
    ["#esprit", "#boss", "#escada"],
    ["#escada", "#esprit", "#boss"]
];

var randomOption = options[Math.floor(Math.random() * options.length)];

for (var i = 1; i <= options.length; i++)
    $("a.test" + i).attr("id", randomOption[i-1]);

for (var i = 1; i <= options.length; i++)
    console.log("Test " +i+ ": " + $("a.test" + i).attr("id"));

这是上面代码的JSFiddle:http://jsfiddle.net/XugvM/2

你也可以制作一个1维数组并像@RoryPickering那样随机播放:http://jsfiddle.net/XugvM/8/

// Define a shuffle function for the Array class.
if (!Array.prototype.hasOwnProperty('shuffle')) {
    Array.prototype.shuffle = function(array) {
        var counter = this.length, temp, index;

        // While there are elements in the array.
        while (counter > 0) {
            // Pick a random index.
            index = Math.floor(Math.random() * counter);

            // Decrease counter by 1.
            counter--;

            // Swap the last element with it.
            temp = this[counter];
            this[counter] = this[index];
            this[index] = temp;
        }
    }
}

// Define variables.
var options = ["#boss", "#esprit", "#escada"];
var optionsLength = options.length;

// Shuffle options.
options.shuffle();

// Assign the ids for the anchors.
for (var i = 0; i < optionsLength; i++)
    $("a.test" + (i + 1)).attr("id", options[i]);

// Print each of the ids in the log console.
for (var i = 1; i <= optionsLength; i++)
    console.log("Test " +i+ ": " + $("a.test" + i).attr("id"));

答案 1 :(得分:0)

看看这里:http://jsfiddle.net/M6z6M/

<强>码

var options = {
    option1: ["#boss", "#esprit", "#escada"],
    option2: ["#esprit", "#boss", "#escada"],
    option3: ["#escada", "#esprit", "#boss"]
};
var rnd = Math.floor((Math.random() * 3) + 1);
var randomOption = options["option" + rnd];

$("a.test1").attr("id", randomOption[0])
$("a.test2").attr("id", randomOption[1])
$("a.test3").attr("id", randomOption[2])

点击每个链接以查看打印该链接的ID