繁体   English   中英

使用数组创建多项选择测验

[英]creating a multiple choice quiz with array

我是一个完整的初学者,我正在使用数组创建一个多项选择测验。 这些问题的格式相同“以下哪个单词与'_________'具有相似的含义” 所以我创建了一个数组(?)来存储我想要放入“________”的所有单词,另一个包含对应答案的数组。

var ques=['apple', 'pencil' ,'juice'];
var ans= ['orange', 'pen','water'];

但是,由于我要创建数百个问题,因此我认为按照以下方式进行操作很麻烦。

var querep=[ ['apple','orange'], ['pencil','pen'],['juice','water'] ];

所以我尝试这样做:

var querep=[ [ques, ans] ];

是的,我知道这对你们来说毫无意义,但我只想合并两个数组列表并允许它执行与 function 相同的操作
var querep

例题:下面哪个词和apple意思相近?
一支钢笔
B.作家
C.orange
D.蔬菜

您的方法可能无法满足此答案。 但是您可以将其作为数据结构设计的参考。 几年前我做了类似的事情,最后发现自己沉浸在重构阶段并重新做了很多部分。

我可以告诉你,当涉及到长列表时,你可能有一个很大的问题调查列表。 你应该把它想象成一个大的 object。 不是像您正在实施的方法那样的常用数组,因为它对于与查找/遍历目的相关的任何事情都更快。

因此,基本上数据可能如下所示:

const questions = {
  "apple": "orange",
  "water": "juice",
  "chicken": "duck",
  ...
}

您仍然可以使用 {key,value} 对遍历 object,您的问题就解决了。

在实际场景中,我认为数据结构可能更复杂,通常每个都有自己的_id ,所以 object 可能看起来像这样,但迭代的方法没有改变。

const questions = {
  "12312311414": {
    id: "12312311414",
    quesion: "apple",
    accept: "orange",
  },
  "12312311415": {
    id: "12312311415",
    quesion: "water",
    accept: "juice",
  },
  ...
}

所以,在决定合并两个 arrays 之前,希望你能改变主意。

plan like this.

    // At first write all your questions , options and answers here.
    var questions = [
        {"question" : "what is the capital of india?" , "options" : ["hyderabad","delhi","chennai","bengalore"], "answer" : "hyderabad"},
        {"question" : "what is even number?" , "options" : [1,3,5,8], "answer" :8}
    ];


    // you will get question along with question number here
    var questions_list = {}; var i = 1;
    $.each(questions ,function(k,v){
        questions_list[i] = v;
    i++;
    });

  console.log(questions_list);

如果您想使用问题中提到的合并数组,您可以在数组上使用map function 来创建一个新数组。 这里新的querep数组应该是你想要的格式:

 var ques=['apple', 'pencil','juice']; var ans= ['orange', 'pen','water']; var querep = ques.map(function(val, index){ return [val, ans[index]] });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM