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

这样你就可以对问题进行随机排序。

你的回答数组是什么样子的?也许可以举个例子?