繁体   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