Javascript 运行for循环,在一个范围内随机更改变量值,但满足所有变量
所以我有一个动态生成的测验。我希望测验问题随机排序。基本上,Javascript 运行for循环,在一个范围内随机更改变量值,但满足所有变量,javascript,jquery,html,Javascript,Jquery,Html,所以我有一个动态生成的测验。我希望测验问题随机排序。基本上,i是从0到answerArray的长度。我希望它能做到这一点,但不是随机的。例如:我要1,0,2,3,4,5,而不是0,1,2,3,5,5。我试过这样做,但我所有的尝试都失败了。如果我能做到这一点,这将是非常有帮助的,这样测试问题就不会总是井然有序。多谢各位 var displayAnswers = function (){ for (var i = 0; i<answerArray.length;i++){ var row1=
i
是从0到answerArray
的长度。我希望它能做到这一点,但不是随机的。例如:我要1,0,2,3,4,5,而不是0,1,2,3,5,5。我试过这样做,但我所有的尝试都失败了。如果我能做到这一点,这将是非常有帮助的,这样测试问题就不会总是井然有序。多谢各位
var displayAnswers = function (){
for (var i = 0; i<answerArray.length;i++){
var row1= document.createElement("div");
$(row1).addClass("row");
var colmd= document.createElement("div");
$(colmd).addClass("row");
$(colmd).addClass("text-center");
$(colmd).addClass("rowtxt");
$(colmd).attr('id',"questionTxt"+[i+1]);
$("#contain").append(row1)
$(row1).append(colmd);
var answer = answerArray[i];
}
var displayAnswers=函数(){
对于(var i=0;i您可以在下面的问题中使用可接受的答案,这将首先生成随机数并将其存储在数组中,然后在for循环中使用它们
示例:
var arr = [];
var answerArray = ["Answer 1", "Answer 2", "Answer 3"];
while( arr.length < answerArray.length ){
var randomnumber=Math.ceil( Math.random() * answerArray.length)
var found=false;
for(var i=0;i<arr.length;i++){
if(arr[i]==randomnumber){found=true;break}
}
if(!found)arr[arr.length]=randomnumber;
}
希望这能有所帮助。我会从思考你需要做什么开始
您希望跟踪已使用的号码,如果已使用生成的号码,则获取新号码
试试这样的
// The initial array
var Array = [1,2,3,4,5];
// The new array or tracking array
var Used = [];
// A function to generate the random index
// We need a function so we can call it if
// the index already exists to ensure we have
// the same amount of values as the inital
// array
function addRandomNum(array) {
var random = Math.floor((Math.random() * Array.length) + 1);
if(array.indexOf(random) === -1){
array.push(random);
} else {
addRandomNum(array);
}
};
// Loop the inital array calling the function
for(var i = 0; i < Array.length; i++){
addRandomNum(Used);
}
// Look at the new randomized array
console.log(Used);
//初始数组
var数组=[1,2,3,4,5];
//新阵列或跟踪阵列
使用的风险值=[];
//生成随机索引的函数
//我们需要一个函数,以便在
//索引已经存在,以确保
//与初始值相同数量的值
//排列
函数addRandomNum(数组){
var random=Math.floor((Math.random()*Array.length)+1);
if(array.indexOf(random)=-1){
array.push(随机);
}否则{
addRandomNum(数组);
}
};
//循环调用函数的初始数组
对于(var i=0;i
如果需要,可以洗牌数组。
如果您遵循以下css技巧链接,则会有随机播放功能:
我喜欢技术2。它使用排序函数随机创建一个负数或正数,根据返回值对项目进行排序。
如果返回值为正数,则第一项将位于传递给函数的第二项之前。如您所见,参数未使用,因为我们不需要逻辑排序,而是基于随机数进行随机排序
你可以这样称呼它:
var answerArray = [
{
"q_id": "1",
"prompt": "Is StackOverflow awesome?",
"a1": "Yes",
"a2": "No",
"correct": "a1"
}
];
answerArray.sort(函数(item1,item2){return 0.5-Math.random()});
好的,我假设一些事情。您的answerArray如下所示:
var answerArray = [
{
"q_id": "1",
"prompt": "Is StackOverflow awesome?",
"a1": "Yes",
"a2": "No",
"correct": "a1"
}
];
首先添加如下属性
"random": Math.floor(Math.random() * 101)
这将创建一个随机数,您可以使用它对数组进行排序,如下所示:
answerArray.sort(function(a, b) {
return parseFloat(a.random) - parseFloat(b.random);
});
这样你就可以对问题进行随机排序。你的回答数组是什么样子的?也许可以举个例子?