[英]choose random array and then an element from this array
我試圖弄清楚是否有可能首先選擇一個隨機數組(在加載時),然后從這個選擇的數組中選擇一個元素。 例如,我有:
var colorsOne = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTwo = ["#CCCCCC","#333333","#990099","#990099"];
var colorsThree = ["#CCCCCC","#333333","#990099","#990099"];
var colorsFour = ["#CCCCCC","#333333","#990099","#990099"];
var colorsFive = ["#CCCCCC","#333333","#990099","#990099"];
var colorsSix = ["#CCCCCC","#333333","#990099","#990099"];
var colorsSeven = ["#CCCCCC","#333333","#990099","#990099"];
var colorsEight = ["#CCCCCC","#333333","#990099","#990099"];
var colorsNine = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTen = ["#CCCCCC","#333333","#990099","#990099"];
var colorsEleven = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTwelve = ["#CCCCCC","#333333","#990099","#990099"];
12個數組(每個數組最終將填充不同的十六進制代碼),我首先需要從這些數組中選擇一個,然后從該數組中選擇一個十六進制代碼(隨機)。
例如
var rand = Math.floor(Math.random() * 4);
$('.header-wrap').css("background-color", colorsEight[rand]);
這將從coloursEight
數組中獲取一個隨機元素,但是我不得不對此進行編程,我需要首先隨機選擇一個數組,然后從該數組中選擇一個元素。
任何建議,將不勝感激!
答案幾乎是問題固有的。 :-)將數組放入數組,然后做同樣的事情:
var colors = [
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"]
];
var array = colors[Math.floor(Math.random() * colors.length)];
var color = array[Math.floor(Math.random() * array.length)];
$('.header-wrap').css("background-color", color);
如果由於某些原因需要這些單獨的數組變量,則仍可以將它們收集在一起:
var colorsOne = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTwo = ["#CCCCCC","#333333","#990099","#990099"];
var colorsThree = ["#CCCCCC","#333333","#990099","#990099"];
var colorsFour = ["#CCCCCC","#333333","#990099","#990099"];
var colorsFive = ["#CCCCCC","#333333","#990099","#990099"];
var colorsSix = ["#CCCCCC","#333333","#990099","#990099"];
var colorsSeven = ["#CCCCCC","#333333","#990099","#990099"];
var colorsEight = ["#CCCCCC","#333333","#990099","#990099"];
var colorsNine = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTen = ["#CCCCCC","#333333","#990099","#990099"];
var colorsEleven = ["#CCCCCC","#333333","#990099","#990099"];
var colorsTwelve = ["#CCCCCC","#333333","#990099","#990099"]
var colors = [
colorsOne,
colorsTwo,
colorsThree,
colorsFour,
colorsFive,
colorsSix,
colorsSeven,
colorsEight,
colorsNine,
colorsTen,
colorsEleven,
colorsTwelve
];
var array = colors[Math.floor(Math.random() * colors.length)];
var color = array[Math.floor(Math.random() * array.length)];
$('.header-wrap').css("background-color", color);
您只需要從所有現有數組生成二維數組。
var super_array = [colorsOne, colorsTwo, ...];
然后,只需獲取super_array的隨機索引,您便有了一個可以滿足您內心需求的數組。
var rand_x = Math.floor(Math.random() * 4);
var rand_y = Math.floor(Math.random() * 4);
$('.header-wrap').css("background-color", super_array[rand_x][rand_y]);
function randomArrVal(arr) {
return arr[Math.floor(arr.length * Math.random())];
}
var array2D = [
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"]
];
$('.header-wrap').css("background-color", randomArrVal(randomArrVal(array2D)));
似乎沒有理由創建命名數組。 您可以只創建一個多維數組,然后從中獲得所需的顏色。 下面的代碼片段演示了這一點。
// BUNDLE ALL THE INDIVIDUAL ARRAY OF COLORS
// INTO ONE SINGLE ARRAY THUS CREATING A MULTI-DIMENSIONAL ARRAY.
var arrHexColors = [
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"],
["#CCCCCC","#333333","#990099","#990099"]
];
// IF NECESSARY (SHOULD THE KEYS BE IMPORTANT TO YOU);
// CREATE AN ARRAY TO HOLD THE KEYS TO THE INDIVIDUAL ARRAY...
// THE IDEA HERE IS TO CREATE A PARALLEL ARRAY, WITH THE KEYS HERE
// CORRESPONDING TO THE KEYS REPRESENTING ITS CONTENT IN THE MULTI-DIMENSIONAL ARRAY.
var arrColorKeys = [
'colorsOne',
'colorsTwo',
'colorsThree',
'colorsFour',
'colorsFive',
'colorsSix',
'colorsSeven',
'colorsEight',
'colorsNine',
'colorsTen',
'colorsEleven',
'colorsTwelve'
];
// GENERATE A RANDOM NUMBER THAT SHOULD BE
// "ONE" LESS THAN THE LENGTH OF THE MULTI-DIMENSIONAL ARRAY
var arrRandomColor = arrHexColors[ Math.floor(Math.random() * arrHexColors.length) ];
// DO THE SAME FOR THE COLOR KEYS ARRAY - IF NEEDED....
var arrRandomKey = arrRandomColor[ Math.floor(Math.random() * arrRandomColor.length) ];
// USING THE GENERATED RANDOM NUMBER PICK THE ARRAY
// CORRESPONDING TO THAT KEY
var randomColor = arrRandomColor[ Math.floor(Math.random() * arrRandomColor.length) ];
$('.header-wrap').css("background-color", randomColor);
console.log(randomColor);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.