当前位置:首页 > JavaScript

js实现随机题库

2026-04-07 07:14:29JavaScript

实现随机题库的基本思路

使用JavaScript实现随机题库的核心在于数据结构的设计和随机算法的应用。题库通常以数组或对象形式存储,随机抽取题目可通过数组的随机索引或洗牌算法实现。

数据结构设计

建议将题库设计为对象数组,每个对象包含题目、选项和答案等属性:

js实现随机题库

const questionBank = [
  {
    question: "问题1",
    options: ["选项A", "选项B", "选项C"],
    answer: 0 // 正确答案的索引
  },
  {
    question: "问题2",
    options: ["选项A", "选项B", "选项C"],
    answer: 1
  }
  // 更多题目...
];

随机抽取单题

通过生成随机索引从题库中抽取题目:

function getRandomQuestion() {
  const randomIndex = Math.floor(Math.random() * questionBank.length);
  return questionBank[randomIndex];
}

随机排序整个题库

使用Fisher-Yates洗牌算法实现题库的随机排序:

js实现随机题库

function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

const shuffledQuestions = shuffleArray([...questionBank]);

避免重复抽题

当需要保证不重复抽取时,可结合数组操作实现:

function getUniqueQuestions(count) {
  const shuffled = shuffleArray([...questionBank]);
  return shuffled.slice(0, count);
}

题目难度分级

对题目进行难度分级后随机抽取:

const questionBank = {
  easy: [...], // 简单题
  medium: [...], // 中等题
  hard: [...] // 难题
};

function getQuestionByDifficulty(difficulty) {
  const pool = questionBank[difficulty];
  return pool[Math.floor(Math.random() * pool.length)];
}

完整示例代码

const questionBank = [
  { question: "1+1=?", options: ["1", "2", "3"], answer: 1 },
  { question: "2+2=?", options: ["2", "4", "6"], answer: 1 },
  { question: "3+3=?", options: ["3", "6", "9"], answer: 1 }
];

function getRandomQuiz(num) {
  const shuffled = [...questionBank].sort(() => 0.5 - Math.random());
  return shuffled.slice(0, num);
}

// 获取2道随机题目
const quiz = getRandomQuiz(2);
console.log(quiz);

标签: 题库js
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…