0

反正有没有做..

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

现在系统以它的书写方式向我展示了这个问题。那么有没有办法让这些问题随机显示?谢谢你。

4

2 回答 2

4

你似乎想要这个:

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

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

于 2013-06-09T13:50:48.750 回答
1

这个问题有两个可能的角度;最初的问题不清楚是指哪一个(或可能两者兼而有之),所以我将同时介绍它们。

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

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

对于这些点中的第一个——问题的随机顺序,鉴于所有问题都已经在数组中,我们只需要打乱数组。这是一项足够常见的任务,并且有许多代码示例围绕演示如何执行此操作。我建议阅读这个问题的一些答案:How can I shuffle an array?

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

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

基本的洗牌是一样的,但你需要有一些与每个答案一起洗牌的东西,表明哪个是正确的,而不是指向一个数组键的单个单独的值。

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

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

现在很容易对答案和问题使用相同的随机播放技术,而不会忘记哪个答案是正确的。

希望有帮助。

于 2013-06-09T14:26:35.530 回答