簡體   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