在javascript中从数组数组中选择随机数组

时间:2014-02-11 09:08:06

标签: javascript arrays random

我有一个数组数组。

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);
}

如何从上面的数组中获取随机数组(不重复直到达到它的长度)。 我怎样才能得到随机挑选的数组的名称?

4 个答案:

答案 0 :(得分:5)

您没有数组,但是包含数组的对象。要选择随机条目,您可以使用以下代码:

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);
}

答案 1 :(得分:1)

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代码。

答案 2 :(得分:1)

您只需要将'A'加到您随机选择的索引前面:

function A(){
    var item = ArrOfarr['A'+(Math.floor(Math.random() * ArrOfarr.keys().length)+1)];
    alert(item);
}

另外,请注意+1:这是因为您的对象从A1开始计数,而您的random函数返回从0开始的值。

最后一项更改是在.keys()功能中添加了random。由于ArrOfarr是一个对象,因此它没有length属性。但是,.keys()会返回其键的数组,其中包含length属性。

答案 3 :(得分:0)

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