【问题标题】:Random array, or something like that [duplicate]随机数组,或类似的东西[重复]
【发布时间】:2013-06-09 13:48:14
【问题描述】:

还有什么可以做的..

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

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

【问题讨论】:

  • 你能解释一下有什么要求吗?

标签: javascript jquery arrays random


【解决方案1】:

你似乎想要这个:

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

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

【讨论】:

  • 嗯,我是个菜鸟,所以我应该如何实现你给处理 var init 的代码并显示代码的这段代码? pastebin.com/2se0vwDC
  • 这完全取决于您当前的代码如何。如果您的代码采用问题索引,则为Math.floor(Math.random()*questions.length)
  • pastebin.com/2se0vwDC 好吧,这里是代码,它很乱,但也许你能弄清楚?我真的坚持这一点。
  • 从第 34 行开始有一个 for loop。在循环的开头添加 var index = Math.floor(Math.random()*questions.length) 并将所有 questions[questionsIteratorIndex] 替换为 questions[index]
  • 天哪...谢谢您,先生!
【解决方案2】:

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

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

  2. 在任何给定问题中随机排列答案。

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

该问题的答案包括代码 sn-ps,它将完全满足您的需求。

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

基本的随机播放是相同的,但你需要有一些随机播放的东西,每个答案表明哪个是正确的,而不是指向数组键的单个单独值。

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

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

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 2014-06-27
    • 2013-01-26
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多