[英]How to sort two arrays with the same random sort
好的,我正在用jQuery / javascript构建一个测验应用程序。
以下小功能旨在随机化一系列问题的可能答案,以及一系列照片。 每张照片对应一个答案。
在我调用此功能之前,照片和答案在每个相应的包装集中的顺序相同。
该函数确实随机化了两组。 但是每个人都是随机分开的。 我需要他们两个进行SAME随机化。
我无法弄清楚如何实现这一目标。 我认为可能能够将它们链接到jQuery样式,但那是不对的。 我也尝试在sort()中分离出函数,但这也没有做到。
有人可以帮忙吗?
function randomize() {
var elemsPhotos = $('.photos').children('img').get();
var elemsQuests = $('.answers').children('.answerLine').get();
elemsPhotos.sort(function() { return (Math.round(Math.random())-0.5); });
elemsQuests.sort(function() { return (Math.round(Math.random())-0.5); });
$('.photos').remove('img');
$('.answers').remove('.answerLine');
for (var i=0; i < elemsQuests.length; i++) {
$('.photos').append(elemsPhotos[i]);
$('.answers').append(elemsQuests[i]);
}
}
如果它们成对出现 ,你可以使用div来保存它们并将div的顺序随机化吗?
否则,您可以编写随机函数来生成序列。 即1,4,2,3作为指数,然后将照片和答案按顺序排列?
要素1->位置1
元素2->位置4
元素3->位置2
元素4->位置3
为什么不用n
值随机化一个数组(其中n
是问题/照片的数量)并使用该数组在每个问题/照片数组中获得“随机”索引?
var elemsPhotos = $('.photos').children('img').get();
var elemsQuests = $('.answers').children('.answerLine').get();
var n = elemsQuests.length;
var randomIndexes = [];
for (var i=0; i<n; i++) {
randomIndexes[i] = i;
}
randomIndexes.sort(function() { return (Math.round(Math.random())-0.5); });
$('.photos').remove('img');
$('.answers').remove('.answerLine');
for (var i=0; i < n; i++) {
$('.photos').append(elemsPhotos[randomIndexes[i]]);
$('.answers').append(elemsQuests[randomIndexes[i]]);
}
你可以随机化(照片,任务)对:
var photos = $('.photos').children('img').get();
var quests = $('.answers').children('.answerLine').get();
var pairs = [];
for (var i=0; i < quests.length; i++)
pairs[i] = { photo: photos[i], quest: quests[i] };
// randomize 'pairs' any way you like
$.each(pairs, function(i, val) {
$('.photos').append(val.photo);
$('.answers').append(val.quest);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.