我使用JavaScript / jQuery随机选择两个数组列表,一个包含单词,另一个包含该词。
我希望每个加载在每个数组中从可用的10中选择5个,这样我就会遇到问题。
我能够将两个数组随机化,但我需要输出相同的“随机”结果,以便它们可以匹配两侧。
var match1 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
var match2 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
并且当前输出类似于
match1 = 2 5 7 8 3
match1 = 1 3 9 4 5
我需要这样的事情
match1 = 7 5 2 8 1
match1 = 7 5 2 8 1
我是JavaScript新手,对于凌乱的代码感到抱歉。
function createQuizLayout() {
//this are the draggables (#leftCol)
var match1 = ["1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
];
//this are drop target (#rightCol)
var match2 = ["1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
];
function randomSort(min, max) {
return (parseInt(Math.random() * 10) % 2);
}
(match1.sort(randomSort));
(match2.sort(randomSort));
var arrMatch1 = [];
for (var i = 0; i < match1.length; i++) {
arrMatch1.push('<li data-index="' + (i + 1) + '">' + match1[i] + '</li>');
arrMatch1.length = arrMatch1.length < 5 ? arrMatch1.length : 5;
}
var arrMatch2 = [];
for (var i = 0; i < match2.length; i++) {
arrMatch2.push('<li data-index="' + (i + 1) + '">' + match2[i] + '</li>');
arrMatch2.length = arrMatch2.length < 5 ? arrMatch2.length : 5;
}
//shuffle the arrays
arrMatch1 = shuffle(arrMatch1);
arrMatch2 = shuffle(arrMatch2);
//insert them into DOM
$('#source').html(arrMatch1.join(''));
$('#target').html(arrMatch2.join(''));
}
function shuffle(v) {
for (var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
return v;
}
答案 0 :(得分:0)
我很确定你错过了如何以正确(相同)方式改组两个阵列 :)
看看这段代码:
var match1 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
var match2 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
var i=0, len= match1.length, next, order=[];
while(i<len)order[i]= ++i;
order.sort(function(){return Math.random()-.5});
for(i=0; i<len; i++){
next=order[i];
match1.push(match1[next]);
match2.push(match2[next]);
}
match1.splice(1, len);
match2.splice(1, len);
console.log(match1)
console.log(match2)
&#13;
要更改阵列,请先获取随机排序,然后将新排列添加到现有阵列(match1)
的末尾。
然后从索引1拼接出来将数组分成两个(相同方式改组)数组,长度完全相同。