簡體   English   中英

在javascript中從數組數組中選擇隨機數組

[英]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 );
}

另一種方法是首先更改數據結構:您可以使用包含dataname的包裝器對象,而不是數組作為內部對象。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM