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

var sm1 = [];

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


但是,这将返回"f"+i的随机索引,而不是索引f1f2f3f4等。

最佳答案

有几种方法可以满足您的要求。

例:



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

09-25 16:32