[英]Randomize two arrays and output the same “randomized” result
我正在使用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;
}
我很確定您錯過了如何以正確的方式(相同)對兩個數組進行混編的部分:)
看一下這段代碼:
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)
要在適當的位置更改數組,請先獲得改組后的順序,然后將新排列添加到現有數組(match1)
的末尾。
然后從索引1剪接出來,將數組分成長度完全相同的兩個數組(以同樣的方式改組)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.