我有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
等。
答案 0 :(得分:3)
为什么不使用2-d数组而不是12个单数组。那么这将非常容易。
答案 1 :(得分:1)
行下面的更改
sm1.push("f"+i[randomPrompt]);
到
sm1.push(eval("f"+i+"["+randomPrompt+"]"));
答案 2 :(得分:0)
您可以使用窗口对象。
var sm1 = [];
for (var i=1; i<=12; i++) {
randomPrompt = Math.floor((Math.random() * 5));
sm1.push(window["f"+i][randomPrompt]);
}
答案 3 :(得分:0)
有几种方法可以完成你的要求。
示例:强>
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);
答案 4 :(得分:0)
var sm1 = [f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12].map(function (arr) {
return arr[Math.floor((Math.random() * arr.length))];
});
我使用二维数组投票而不是命名为12个单数组。