当前位置:首页 > 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实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现防洪

js实现防洪

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…