2013-06-12 103 views
0

我試圖隨機化一組數組中的3個數組,然後設置從隨機選擇的ID鏈接,很難解釋,但希望我的代碼可以幫助您瞭解我'm試圖做的事:隨機數組的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]) 

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

謝謝。

+1

'options'是一個對象所以你不能使用整數對字段進行索引。這應該是一個2D數組。 –

+0

那麼我該怎麼做? – user1937021

+0

它的一個對象,因此可以像這樣訪問'options ['option'+ Math.floor(Math.random()* 3)];'雖然,我看到不同的選項是相同的id數組,但順序不同,爲什麼不只是有一個單一的維數組和洗牌呢? – rorypicko

回答

1

如果你要索引的ID ,那麼你應該製作一個二維數組。

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

您也可以使一維陣列和洗牌等@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")); 
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]) 

點擊各個鏈接看的隨機數打印的鏈接