随机数组,或类似的东西

时间:2013-06-09 13:48:14

标签: javascript jquery arrays random

无论如何要做.. ..

var init = { 
 'questions': [ 
   {
       'question': 'jQuery is a...',
       'answers': ['JavaScript library','Ruby Gem','PHP Framework','None of the above'],
          'correctAnswer': 1
   },
   {
       'question': 'X comes after?',
       'answers': ['P','W','Y','v'],
          'correctAnswer': 2
   },
     {
       'question': 'Meh stands for..',
       'answers': ['Eh','/Sigh','What?','Whatever'],
          'correctAnswer': 4
   }
 ] };

现在系统以编写方式向我显示问题。那么有什么方法可以随机显示这些问题?谢谢。

2 个答案:

答案 0 :(得分:4)

你似乎想要这个:

var questions = init.questions;
var question = questions[Math.floor(Math.random()*questions.length)]

这为您提供了questions数组的随机元素。

答案 1 :(得分:1)

这个问题有两个可能的角度;最初的问题并不清楚哪一个是(或可能两者),所以我将覆盖它们。

  1. 随机化显示问题的顺序。

  2. 在任何给定问题中随机化答案的顺序。

  3. 对于第一个问题 - 问题的随机顺序,假设所有问题都在数组中,我们只需要对数组进行洗牌。这是一项非常常见的任务,并且有许多代码示例可以演示如何执行此操作。我建议阅读这个问题的一些答案:How can I shuffle an array?

    该问题的答案包括完全符合您需要的代码片段。

    第二部分基本上是同一个问题,但由于需要跟踪哪个答案是正确答案,因此稍微复杂一些。

    基本的shuffle会是相同的,但你需要有一些东西,每个答案都指向哪个是正确的,而不是指向数组键的单个单独的值。

    因此,例如,您的问题数据可能如下所示:

    {
       'question': 'X comes after?',
       'answers': [
           {'answer':'P','correct':false},
           {'answer':'W','correct':true},
           {'answer':'Y','correct':false},
           {'answer':'v','correct':false}
       ]
    },
    

    现在很容易在问题的答案上使用相同的shuffle技术,而不会忘记哪个答案是正确的。

    希望有所帮助。