当前位置:首页 > JavaScript

js实现选题

2026-04-03 19:54:51JavaScript

使用JavaScript实现选题功能

基础实现方法

创建一个简单的选题功能可以通过数组和随机数生成器实现。定义一个包含选项的数组,使用Math.random()方法随机选择一个元素。

const options = ['选项A', '选项B', '选项C', '选项D'];
const randomIndex = Math.floor(Math.random() * options.length);
const selectedOption = options[randomIndex];
console.log(selectedOption);

加权随机选择

如果需要不同选项有不同的选中概率,可以给每个选项分配权重值。计算总权重后,根据随机数落在哪个区间来确定选中项。

js实现选题

const weightedOptions = [
  {option: '选项A', weight: 10},
  {option: '选项B', weight: 30},
  {option: '选项C', weight: 60}
];

const totalWeight = weightedOptions.reduce((sum, item) => sum + item.weight, 0);
let random = Math.random() * totalWeight;
let weightSum = 0;

for (const item of weightedOptions) {
  weightSum += item.weight;
  if (random <= weightSum) {
    console.log(item.option);
    break;
  }
}

排除已选选项

实现一个不重复选择的功能,需要记录已选选项并从剩余选项中继续选择。

const allOptions = ['A', 'B', 'C', 'D', 'E'];
const selectedOptions = [];

function selectUniqueOption() {
  const availableOptions = allOptions.filter(opt => !selectedOptions.includes(opt));
  if (availableOptions.length === 0) return null;

  const randomIndex = Math.floor(Math.random() * availableOptions.length);
  const selected = availableOptions[randomIndex];
  selectedOptions.push(selected);
  return selected;
}

可视化选题界面

js实现选题

结合HTML创建一个简单的选题界面,点击按钮随机选择并显示结果。

<div id="options-container">
  <p>可选项目: A, B, C, D</p>
  <button id="select-btn">随机选择</button>
  <p id="result"></p>
</div>

<script>
  document.getElementById('select-btn').addEventListener('click', function() {
    const options = ['A', 'B', 'C', 'D'];
    const randomIndex = Math.floor(Math.random() * options.length);
    document.getElementById('result').textContent = `选中: ${options[randomIndex]}`;
  });
</script>

进阶实现方法

对于需要更复杂选择逻辑的场景,可以创建一个可配置的选择器类,支持多种选择策略。

class OptionSelector {
  constructor(options) {
    this.options = options;
  }

  randomSelect() {
    const index = Math.floor(Math.random() * this.options.length);
    return this.options[index];
  }

  weightedSelect(weights) {
    if (weights.length !== this.options.length) {
      throw new Error('Weights array must match options length');
    }

    const totalWeight = weights.reduce((a, b) => a + b, 0);
    let random = Math.random() * totalWeight;
    let weightSum = 0;

    for (let i = 0; i < this.options.length; i++) {
      weightSum += weights[i];
      if (random <= weightSum) {
        return this.options[i];
      }
    }
  }
}

// 使用示例
const selector = new OptionSelector(['红', '黄', '蓝']);
console.log(selector.randomSelect());
console.log(selector.weightedSelect([1, 2, 3]));

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…