新闻中心

J*aScript 实现数组随机显示且不重复

2025-10-25
浏览次数:
返回列表

javascript 实现数组随机显示且不重复

本文将介绍如何使用 J*aScript 实现一个数组的随机显示功能,点击按钮后,数组中的元素会依次随机显示在页面上,且不会重复显示同一个元素,直到所有元素都显示完毕。同时,提供重置按钮,以便重新开始随机显示。

核心思路

实现该功能的关键在于以下几点:

  1. 数组乱序(Shuffle): 在显示之前,需要对原始数组进行乱序处理,以保证每次显示的元素都是随机的。
  2. 索引控制: 使用一个索引变量来记录当前显示的元素位置,每次点击按钮后,索引递增。
  3. 边界判断: 在索引递增之前,需要判断索引是否超出数组的范围,如果超出,则不再显示任何元素。
  4. 重置功能: 提供一个重置按钮,点击后重新对数组进行乱序,并将索引重置为 0,以便重新开始显示。

实现步骤

1. HTML 结构

首先,在 HTML 文件中添加一个按钮和一个用于显示元素的段落。

<!DOCTYPE html>
<html>
<head>
  <title>随机显示数组元素</title>
</head>
<body>
  <p id="element-display"></p>
  <button id="next-button">下一个</button>
  <button id="reset-button">重置</button>

  <script src="script.js"></script>
</body>
</html>

2. J*aScript 代码

接下来,在 script.js 文件中编写 J*aScript 代码。

MarsCode MarsCode

字节跳动旗下的免费AI编程工具

MarsCode 339 查看详情 MarsCode
// 原始数组
const arr = ['x', 'y', 'z'];

// 获取 HTML 元素
const displayElement = document.getElementById('element-display');
const nextButton = document.getElementById('next-button');
const resetButton = document.getElementById('reset-button');

// 乱序后的数组
let shuffledArr = shuffle(arr);

// 索引
let index = 0;

// 点击“下一个”按钮的事件处理函数
nextButton.addEventListener('click', () => {
  if (index < shuffledArr.length) {
    displayElement.textContent = shuffledArr[index];
    index++;
  } else {
    displayElement.textContent = '已显示所有元素';
  }
});

// 点击“重置”按钮的事件处理函数
resetButton.addEventListener('click', () => {
  shuffledArr = shuffle(arr);
  index = 0;
  displayElement.textContent = '';
});

// 数组乱序函数 (Fisher-Yates shuffle)
function shuffle(array) {
  let currentIndex = array.length,  randomIndex;

  // While there remain elements to shuffle.
  while (currentIndex != 0) {

    // Pick a remaining element.
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;

    // And swap it with the current element.
    [array[currentIndex], array[randomIndex]] = [
      array[randomIndex], array[currentIndex]];
  }

  return array;
}

代码解释:

  • arr:定义原始数组。
  • displayElement, nextButton, resetButton:获取对应的 HTML 元素。
  • shuffledArr:存储乱序后的数组,初始值为对原始数组进行乱序的结果。
  • index:记录当前显示的元素的索引,初始值为 0。
  • nextButton.addEventListener('click', ...):为“下一个”按钮添加点击事件监听器。
    • 在事件处理函数中,首先判断 index 是否小于 shuffledArr.length,如果小于,则将 shuffledArr[index] 的值显示在 displayElement 中,并将 index 递增 1。
    • 如果 index 大于等于 shuffledArr.length,则表示所有元素都已显示,显示 "已显示所有元素"。
  • resetButton.addEventListener('click', ...):为“重置”按钮添加点击事件监听器。
    • 在事件处理函数中,重新对原始数组进行乱序,并将 index 重置为 0,同时清空 displayElement 的内容。
  • shuffle(array):实现数组乱序的函数,采用 Fisher-Yates shuffle 算法。

3. 样式 (可选)

可以根据需要添加 CSS 样式来美化页面。

body {
  font-family: sans-serif;
  text-align: center;
}

button {
  padding: 10px 20px;
  margin: 10px;
  cursor: pointer;
}

总结

通过以上步骤,我们就实现了一个简单的数组随机显示且不重复的功能。 该功能可以应用于各种场景,例如随机显示广告语、随机显示图片等。 核心在于数组乱序算法和索引控制。 使用 Fisher-Yates shuffle 算法可以保证数组乱序的均匀性。

以上就是J*aScript 实现数组随机显示且不重复的详细内容,更多请关注其它相关文章!


# 相关文章  # 澧县网站seo优化排名  # 帆布厂推广用哪个网站  # 绥芬河网站建设优化推广  # 慈善网站建设方案  # 辽宁自适应网站建设  # 郑州seo优化需求  # 网站优化后没有咨询  # 花束推广怎么做好营销工作  # 武汉网站优化经验  # 消时乐新营销推广  # 几点  # 解决问题  # 中文网  # css  # 都是  # 显示效果  # 值为  # 单选框  # 并将  # 表单  # 点击事件  # ai  # js  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 小米汽车11月交付量突破40000台!雷军:将继续努力  蛙漫安全无毒 官方认证的绿色入口  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  利用Bokeh CustomJS动态控制DataTable列可见性  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  铁路12306的积分有效期是多久_铁路12306积分有效期说明  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比  192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  4399体育竞技小游戏_4399小游戏赛事入口  钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法  腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  邮政快递包裹最新位置 邮政快递实时追踪入口  《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元  Android Studio计算器C键功能异常排查与修复教程  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  Golang指针如何与map组合使用_Golang map指针组合实践  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  Go语言中Map值调用指针接收器方法的限制与应对  sublime怎么设置启动时打开的窗口_sublime会话管理与热退出  win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】  Win11网速慢怎么解决 Win11网络设置优化解除限速  一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  小米14应用无法联网原因分析_小米14网络权限修复  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  c++如何使用chrono库处理时间_c++标准库时间与日期操作  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  J*aScript中localStorage数据的获取、清洗与格式化教程  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  AO3最新可访问网址 Archive of Our Own官方在线入口  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  知音漫客正版漫画平台_知音漫客官网账号登录  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  小米Civi 4录制视频过暗_小米Civi 4亮度优化  Go RPC HTTP服务正确实现与常见陷阱解析  C++ vector二维数组定义_C++ vector of vector用法  可靠CSGO开箱平台解析 CSGO开箱网合集  如何使用Go和Martini动态服务解码后的图片  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  深入理解J*a编译器的兼容性选项:从-source到--release 

搜索