[英]Pick random Array from array of arrays in javascript
我有一個數組數組。
var ArrOfarr = { A1: ["choice", "choice2", "choice3"], A2: ["choice1", "choice2"], A3: ["choice1", "choice2"], A4: [], A5: [], A6: [], A7: [] }
我想在每次單擊按鈕時從'ArrOfarr'中選擇隨機數組。 我試過下面的內容,但看到'undefined':
function A()
{
var item = ArrOfarr[Math.floor(Math.random()*ArrOfarr.length)];
alert(item);
}
如何從上面的數組中獲取隨機數組(不重復直到達到它的長度)。 我怎樣才能得到隨機挑選的數組的名稱?
你沒有數組,但是包含數組的對象。 要選擇隨機條目,您可以使用以下代碼:
function A(){
var keys = Object.keys( ArrOfarr );
var name = keys[ Math.floor(Math.random()*keys.length) ];
var item = ArrOfarr[ name ];
alert( name );
alert( item );
}
另一種方法是首先更改數據結構:您可以使用包含data
和name
的包裝器對象,而不是數組作為內部對象。
var ArrOfarr = [ {name: 'A1', data: ["choice", "choice2", "choice3"] }, /* ... */ ];
function A() {
var item = ArrOfarr[Math.floor(Math.random()*ArrOfarr.length)];
alert(item.data);
}
var ArrOfarr = { A1: ["choice", "choice2", "choice3"], A2: ["choice1", "choice2"], A3: ["choice1", "choice2"], A4: [], A5: [], A6: [], A7: [] }
是一個對象文字
var ArrOfarr = [["choice", "choice2", "choice3"], ["choice1", "choice2"], ["choice1", "choice2"], [], [], [], []]
數組數組;
使用數組定義更改代碼,或使用Sirko代碼。
您只需要在您隨機選擇的索引前加上'A'
:
function A(){
var item = ArrOfarr['A'+(Math.floor(Math.random() * ArrOfarr.keys().length)+1)];
alert(item);
}
另外,注意+1
:那是因為你的對象從A1
開始計數,而你的random
函數返回從0
開始的0
。
最后一個更改是在random
函數中添加.keys()
。 因為ArrOfarr
是一個對象,所以它沒有length
屬性。 但是, .keys()
返回其鍵的數組,該數組具有length
屬性。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
計算對象中的鍵數,運行具有該計數上限的隨機操作。
使用for..in循環獲取該隨機數,每個屬性+1。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.