jquery从对象中选择一个随机属性

时间:2017-08-30 00:43:27

标签: jquery

我需要这样做: 单击按钮时:打印出随机一组:question,options并等待用户选择其中一个选项。

我已经在stackoverflow和其他网站上搜索了答案,但仍无法弄明白。

到目前为止,我有两种方法: 第一种方法:

function data(question, options, answer) {
    this.question = question;
    this.options = options;
    this.answer = answer;
}

var q1 = new data("Question 1", ["Option 1", "Option 2", "Option 3", " Option 4"], 3);
//then keep creating new var q

第二种方法:

var pool = {
    q1: {
        question: "Question 1",
        options: ["Option 1", "Option 2", "Option 3", "Option 4"],
        answer: 2
    },
    q2: {}
}
//then randomly pick a q out of the array(?)/object pool

我被困在这里。我无法弄清楚如何显示存储集的随机集(每个集有一个问题,4个答案选项),并且该集还带有正确的答案作为1个选项的索引。

1 个答案:

答案 0 :(得分:1)

这可能会给你一个提示来做你的测验生成器,这就是我现在出来的功能,该函数会给你一个obejct的随机属性, HOWEVER 为你的测验生成器想要过滤至少已经显示或打印的属性。现在试试这个,让我知道如果它帮助你解决问题。

var pool = {
q1: {
    question: "Question 1",
    options: ["Option 1", "Option 2", "Option 3", "Option 4"],
    answer: 2
},
q2: {
    question: "Question 2",
    options: ["Option 1", "Option 2", "Option 3", "Option 4"],
    answer: 2
},
q3: {
    question: "Question 3",
    options: ["Option 1", "Option 2", "Option 3", "Option 4"],
    answer: 2
},
q4: {
    question: "Question 3",
    options: ["Option 1", "Option 2", "Option 3", "Option 4"],
    answer: 2
},
}

function randomIt(obj) {
  var keys = Object.keys(obj)
  return obj[keys[ keys.length * Math.random() << 0]];
};

console.log(randomIt(pool));

Alsa a Jsfiddle here