当前位置:首页 > JavaScript

js实现选题

2026-01-14 14:10:58JavaScript

实现选题功能的JavaScript方法

基础实现方案

使用数组存储选项,通过随机索引选取:

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

权重选择实现

为选项添加权重比例:

js实现选题

const weightedOptions = [
  { item: '选项A', weight: 0.1 },
  { item: '选项B', weight: 0.3 },
  { item: '选项C', weight: 0.6 }
];

function weightedRandom(items) {
  const totalWeight = items.reduce((acc, cur) => acc + cur.weight, 0);
  const random = Math.random() * totalWeight;
  let weightSum = 0;

  for (const item of items) {
    weightSum += item.weight;
    if (random <= weightSum) return item.item;
  }
}

排除重复选择

记录已选项目避免重复:

js实现选题

const allOptions = ['A','B','C','D','E'];
const selectedItems = new Set();

function getUniqueOption() {
  const available = allOptions.filter(x => !selectedItems.has(x));
  if (available.length === 0) return null;

  const choice = available[Math.floor(Math.random() * available.length)];
  selectedItems.add(choice);
  return choice;
}

可视化选择器

创建简单的UI选择器:

<div id="selector">
  <button data-option="1">选项1</button>
  <button data-option="2">选项2</button>
  <button data-option="3">选项3</button>
</div>
<script>
  document.querySelectorAll('#selector button').forEach(btn => {
    btn.addEventListener('click', () => {
      console.log(`选择了: ${btn.dataset.option}`);
    });
  });
</script>

抽奖转盘实现

使用CSS动画实现转盘效果:

function spinWheel(items, duration = 3000) {
  const wheel = document.getElementById('wheel');
  const degrees = 360 * 5 + Math.floor(Math.random() * 360);
  wheel.style.transition = `transform ${duration}ms cubic-bezier(0.17,0.89,0.32,0.98)`;
  wheel.style.transform = `rotate(${degrees}deg)`;

  setTimeout(() => {
    const segmentAngle = 360 / items.length;
    const offsetAngle = degrees % 360;
    const selectedIndex = Math.floor((360 - offsetAngle) / segmentAngle) % items.length;
    console.log('抽中:', items[selectedIndex]);
  }, duration);
}

这些实现方案覆盖了从基础随机选择到带权重的进阶选择,以及可视化交互的实现方式。根据具体需求可以选择合适的方案或组合使用多个方法。

标签: js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现倒计时

js实现倒计时

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

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…