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

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.defin…

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

css3结合js制作

css3结合js制作

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