我有12个名为f1
到f12
的数组,每个数组有五个项目。我想从每个数组中随机抽取一项并将其推入新数组sm1
中。
var sm1 = [];
for (var i=1; i<=12; i++) {
randomPrompt = Math.floor((Math.random() * 5));
sm1.push("f"+i[randomPrompt]);
}
但是,这将返回
"f"+i
的随机索引,而不是索引f1
,f2
,f3
,f4
等。 最佳答案
有几种方法可以满足您的要求。
例:
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 = [];
for (var i=1; i<=4; i++) {
randomPrompt = Math.floor((Math.random() * 5));
sm1.push(myArray["f"+i][randomPrompt]);
}
console.log(sm1);
或者,如果您在浏览器中使用代码:
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 = [];
for (var i=1; i<=4; i++) {
randomPrompt = Math.floor((Math.random() * 5));
sm1.push(window["f"+i][randomPrompt]);
}
console.log(sm1);
或使用
eval()
: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 = [],item;
for (var i=1; i<=4; i++) {
randomPrompt = Math.floor((Math.random() * 5));
item = eval(["f"+i][0]);
sm1.push(item[randomPrompt]);
}
console.log(sm1);