Javascript 从多个数组中提取随机项

Javascript 从多个数组中提取随机项,javascript,arrays,random,indexing,Javascript,Arrays,Random,Indexing,我有12个名为f1到f12的数组,每个数组有五个项。我想从每个阵列中随机抽取一个项目,并将其推入新阵列sm1 var sm1 = []; for (var i=1; i<=12; i++) { randomPrompt = Math.floor((Math.random() * 5)); sm1.push("f"+i[randomPrompt]); } var sm1=[]; 对于(var i=1;i为什么不使用一个二维数组而不是12个单数组呢?这样就很容易了。为什么不

我有12个名为
f1
f12
的数组,每个数组有五个项。我想从每个阵列中随机抽取一个项目,并将其推入新阵列
sm1

var sm1 = [];

for (var i=1; i<=12; i++) {
    randomPrompt = Math.floor((Math.random() * 5));
    sm1.push("f"+i[randomPrompt]);
}
var sm1=[];

对于(var i=1;i为什么不使用一个二维数组而不是12个单数组呢?这样就很容易了。

为什么不使用一个二维数组而不是12个单数组呢?这样就很容易了。

可以使用window对象

var sm1 = [];

for (var i=1; i<=12; i++) {
    randomPrompt = Math.floor((Math.random() * 5));
    sm1.push(window["f"+i][randomPrompt]);
}
var sm1=[];

对于(var i=1;i,可以使用窗口对象

var sm1 = [];

for (var i=1; i<=12; i++) {
    randomPrompt = Math.floor((Math.random() * 5));
    sm1.push(window["f"+i][randomPrompt]);
}
var sm1=[];
对于(var i=1;i线下的变化

sm1.push("f"+i[randomPrompt]);

行下的更改

sm1.push("f"+i[randomPrompt]);


有几种方法可以实现你的要求

示例:

var myArray={
“f1”:[1,2,3,4,5],
“f2”:[6,7,8,9,10],
“f3”:[11,12,13,14,15],
“f4”:[16,17,18,19,20]
}
var sm1=[];

对于(var i=1;i有几种方法可以实现您的要求

示例:

var myArray={
“f1”:[1,2,3,4,5],
“f2”:[6,7,8,9,10],
“f3”:[11,12,13,14,15],
“f4”:[16,17,18,19,20]
}
var sm1=[];
对于(var i=1;i
不过,我会使用二维数组而不是命名的12个单数组进行投票


不过,我会使用二维数组而不是命名的12个单数组进行投票。

每当您发现自己创建这样的数值变量时,都应该使用数组。谢谢提醒。是的,在这种情况下,f1到f12变量名称是特定于我所处的上下文和交叉引用的课程内容的。使用它们将低级别的非编码人员,他们必须调整这一点才能知道要调整哪些位。每当你发现自己创建这样的数字变量时,你都应该使用数组。谢谢提醒。是的,在这种情况下,f1到f12变量名特定于我正在处理的上下文和交叉引用的课程内容。使用它们将允许非编码-必须对此进行调整以知道要调整哪些位的编码人员。如果不是全局的,您可以“this”或当前作用域。我实际上在代码中的这一点上是全局工作的,因此这是适当的。我感谢您的警告@Barmar。如果不是全局的,您可以“this”或当前作用域。我实际上在代码中的这一点上是全局工作的因此,这是适当的。我感谢您的警告,尽管@Barmar.Thank Ali。非常全面。感谢您添加不同的版本,因为这有助于我了解其他方法。第二种方法很好,并且最接近我使用的代码。感谢Ali。非常全面。感谢您添加不同的版本,因为它有助于我了解其他方法第二个很好,并且最接近我使用的代码。