如何在javascript中修改数组并提取随机值

时间:2019-12-02 17:18:32

标签: javascript arrays

我想为地理课构建一个简单的测验应用程序,我的逻辑是:将问题存储到数组中,并从数组中提取随机问题,当用户单击答案时,会触发一个函数并比较答案,回答后从数组中排除问题并拉出另一个随机问题 到目前为止,我设法拉出随机问题,给出答案,比较答案,并从数组中删除问题,然后拉出另一个随机问题,但是当函数启动时,答案与第一个随机问题进行比较

到目前为止,这里是y代码:


    let judet = judete[Math.floor(Math.random() * judete.length)];

    console.log("start> "+judet);

    function checkAnswer(val){

        console.log("ras= "+val)


        if(val==judet){
            console.log("corect");


            let valueToRemove = val;
            let filteredItems = judete.filter(item => item !== valueToRemove);
            let judet = judete[Math.floor(Math.random() * judete.length)];

            console.log("inrebare= "+judet);

        }else{
            console.log("gresit");

            let valueToRemove = val;
            let filteredItems = judete.filter(item => item !== valueToRemove);
            let judet = judete[Math.floor(Math.random() * judete.length)];

            console.log("inrebare= "+judet);

        }


    }

3 个答案:

答案 0 :(得分:0)

就像@Dave在评论中说的那样,您可以将数组随机播放,然后弹出。

var arr = [1, 2, 3, 4, 5];
for (var i = 0; i < 5; i++) {
  shuffle(arr);
  console.log(arr.pop());
}

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
}
Keep re-running me to see the result.

答案 1 :(得分:0)

@Saud,您为我指明了正确的方向,这是我的工作方式:

let judete = ["ar","ab","ag","tm","bh"];

    shuffle(judete);


    function shuffle(array) {
    for (let i = array.length - 1; i > 0; i--) {
        let j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
     }
    }
        let judet = judete.pop();


    console.log("start> "+judet);  

    function checkAnswer(val){

        console.log("ras= "+val);


        if(val==judet){
            console.log("corect");

            shuffle(judete); 
            judet = judete.pop();

            console.log("inrebare= "+judet);

        }else{
            console.log("gresit");

            shuffle(judete); 
            judet = judete.pop();

            console.log("inrebare= "+judet);

        }


    }

答案 2 :(得分:0)

为什么不使用randojs.com

var arr = randoSequence(["question 1", "question 2", "question 3"]);
for(var i = arr.length - 1; i >= 0; i--){
  console.log(arr.pop().value);
}

如果您想使用我的答案,只需将其包括在您的头部标签中即可

<script src="https://randojs.com/1.0.0.js"></script>
相关问题