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

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

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

核心思路

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

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

实现步骤

1. HTML 结构

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

立即学习“Java免费学习笔记(深入)”;

  随机显示数组元素  

2. JavaScript 代码

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

// 原始数组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 = 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 算法可以保证数组乱序的均匀性。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1588378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月23日 04:13:28
下一篇 2025年12月23日 04:13:35

相关推荐

  • HTML5网页如何制作倒计时 HTML5网页计时器组件的开发教程

    倒计时功能通过JavaScript的Date对象和setInterval实现,结合HTML结构与CSS样式,实时计算并展示当前时间与目标时间的差值,归零后可触发回调函数。 在HTML5网页中制作倒计时或计时器组件,主要依赖JavaScript结合HTML和CSS来实现。虽然HTML5本身不提供原生的…

    好文分享 2025年12月23日
    000
  • Mac用Transmit快速传HTML静态页面到测试空间

    首先使用Transmit连接远程服务器,选择SFTP或FTP协议并保存书签;接着在双栏界面中将本地HTML项目文件拖拽上传至目标目录;然后核对文件完整性并设置正确权限(如644);最后通过浏览器访问测试链接,检查页面加载效果并修正问题。 如果您已完成本地HTML静态页面的开发,并希望快速将其上传至远…

    2025年12月23日
    000
  • html浏览器临时缓存内容如何清理_html浏览器临时缓存内容清理的实用技巧

    清除浏览器缓存可解决页面显示异常问题,通过清除浏览数据、强制刷新、使用无痕模式、手动删除缓存文件或开发者工具禁用缓存五种方法可有效恢复网页正常加载。 如果您在浏览网页时遇到页面显示异常、加载旧内容或速度变慢,可能是由于浏览器临时缓存了过期或错误的数据。清除这些缓存文件有助于恢复正常的浏览体验。以下是…

    2025年12月23日
    000
  • SourceTree可视化对比,CSS改前改后一眼看穿!

    首先启用内联差异显示,点击“内联差异”按钮以分开展示修改行,删除样式标红、新增样式标绿;接着配置外部比较工具如Beyond Compare,在“首选项→差异”中选择工具后右键文件使用外部工具查看,获得语法高亮与结构对齐的对比效果;最后利用SourceTree自带语法着色,通过颜色区分选择器(黑色)、…

    2025年12月23日
    000
  • Notion模板一键管理HTML+CSS学习全项目!

    使用Notion模板高效管理HTML+CSS学习,通过创建项目分类数据库、嵌入代码预览、关联笔记资源、设置进度看板及定期导出备份,实现知识体系化积累与可视化追踪。 如果您正在学习HTML和CSS,并希望高效组织代码示例与学习笔记,使用Notion模板可以实现集中化管理。通过结构化分类和可视化布局,您…

    2025年12月23日
    000
  • html 如何发布文章_HTML文章发布(表单/数据库)流程方法

    答案:通过HTML表单结合后端服务实现文章发布,可采用四种方法:一、使用HTML表单提交数据至服务器处理;二、利用Ajax异步发送JSON数据提升体验;三、集成富文本编辑器提交带格式的HTML内容并过滤XSS风险;四、通过RESTful或GraphQL API完成前后端分离架构下的文章发布流程。 如…

    2025年12月23日
    000
  • html在线生成器_html生成器网页版工具

    答案是https://www.htmlg.com/,该平台提供拖拽式界面设计、多种预设模板、实时预览和文件导出功能,支持浏览器内操作、云端保存、元素复用、自定义CSS及SEO设置,并兼容主流浏览器与外部资源嵌入。 html在线生成器网页版工具在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来…

    2025年12月23日
    000
  • html邮件如何发送_HTML格式邮件内容编写与发送方法

    掌握HTML邮件编写需注意:使用内联样式和table布局以提升兼容性,控制宽度在600px内,图片用绝对URL;通过Python的smtplib发送时,将HTML内容作为MIMEText附加,并确保SMTP配置正确;推荐使用SendGrid等专业邮件服务API,支持模板、高送达率且易于集成。 发送H…

    2025年12月23日
    000
  • html如何划分块_HTML内容分块(div/section)与区域划分方法

    使用div、section、article、aside、header、main、footer等块级元素可实现HTML内容的合理分块与语义化布局,通过class或id配合CSS进行样式控制,结合嵌套结构与flex/grid布局,构建清晰、可访问的页面结构。 如果您在编写HTML页面时需要对内容进行合理…

    2025年12月23日
    000
  • OneDrive跨设备同步,HTML+CSS走到哪写到哪!

    OneDrive通过云同步实现HTML和CSS代码跨设备实时协作。将项目存于OneDrive文件夹并登录账户,可自动同步至所有设备;在Surface Pro 9运行Windows 11环境下,使用Visual Studio Code打开OneDrive中的项目目录,保存即触发后台同步;移动端安装On…

    2025年12月23日
    000
  • 如何解决在线编辑HTML时字体渲染问题的解决办法

    使用Web安全字体或通过@font-face引入WOFF/WOFF2格式自定义字体,设置fallback字体栈;2. 添加font-display:swap避免FOIT;3. 用-webkit-font-smoothing和text-rendering优化渲染;4. 确保HTML和CSS均为UTF-…

    2025年12月23日
    000
  • 如何解决Notepad++ HTML代码格式化问题的处理方法

    安装HTMLTidy插件可直接格式化HTML代码,修复缩进与标签问题;也可结合js-beautify等外部工具通过命令行调用实现更灵活美化,确保语言识别正确并使用UTF-8编码以提升处理准确性。 Notepad++ 本身不内置 HTML 代码格式化功能,但可以通过插件或外部工具实现代码美化。如果遇到…

    2025年12月23日
    000
  • 如何在Emacs中设置HTML模式的高亮显示的处理方法

    首先启用font-lock模式并配置html-mode或web-mode,再通过安装web-mode增强HTML、CSS、JavaScript混合高亮,最后加载主题或自定义face优化颜色显示,确保文件类型正确识别以实现完整语法高亮。 在Emacs中设置HTML模式的高亮显示,主要是通过启用语法高亮…

    2025年12月23日
    000
  • HTML5代码如何实现水印效果 HTML5代码Canvas叠加层的制作

    使用Canvas创建透明水印覆盖内容,通过JavaScript绘制文字或图片并叠加到目标区域,支持动态更新与响应式适配,有效标识来源且难以直接移除。 在HTML5中实现水印效果,主要通过 Canvas 元素绘制透明文字或图案,并将其作为叠加层覆盖在目标内容上。这种方式灵活、兼容性好,适合为图片、文档…

    2025年12月23日
    000
  • html如何清除表单_HTML表单数据清除(reset/resetFields)方法

    使用reset按钮可快速重置表单至初始状态,通过JavaScript操作DOM能灵活清空指定字段,调用form.reset()方法可编程触发重置,前端框架如Ant Design提供resetFields方法清除数据与校验,也可手动逐个设置字段值实现精准控制。 如果您需要在HTML页面中清除表单数据,…

    2025年12月23日
    000
  • 如何解决UltraEdit HTML代码折叠问题的处理方法

    首先检查HTML标签是否正确嵌套和闭合,确保语法结构完整;接着确认UltraEdit中文件语言模式正确设置为HTML;然后在设置中启用代码折叠功能并开启基于语法的折叠规则;若问题仍存在,可尝试重置配置文件或更新软件版本以解决潜在兼容性问题。 UltraEdit 在编辑 HTML 文件时提供了代码折叠…

    2025年12月23日
    000
  • Mac iCloud Drive自动备份每天HTML练习代码

    首先启用iCloud Drive并登录Apple ID,将HTML代码文件夹移入iCloud Drive目录,每天创建日期命名的子文件夹分类存储,通过桌面别名快速访问,并定期检查文件同步状态以确保备份成功。 如果您希望在Mac上使用iCloud Drive自动备份每天编写的HTML练习代码,可以通过…

    2025年12月23日
    000
  • Ubuntu神器自动补全,HTML+CSS一敲即出!

    首先安装并配置VS Code,启用Emmet实现HTML缩写补全;接着安装Prettier并设置保存时自动格式化;然后确保IntelliSense功能开启以获得智能提示;最后通过安装Live Server、Auto Rename Tag和Color Highlight等插件提升前端开发效率。 如果您…

    2025年12月23日
    000
  • uc如何导出html_UC浏览器/平台HTML内容导出方法

    UC浏览器无法直接导出HTML文件,但可通过手机端离线保存、电脑端另存为网页、复制源码或开发者工具提取实现。其中电脑端“另存为”可生成标准HTML文件,适合编辑使用;手机端保存为专有格式,仅支持本地查看;查看源码或使用F12开发者工具则适用于需精确获取HTML代码的场景。 UC浏览器本身不提供直接导…

    2025年12月23日
    000
  • 如何处理HTML外部资源引用的解决办法

    首先检查资源路径是否正确,使用相对或绝对路径确保匹配文件位置;确认服务器存在文件、MIME类型正确且有读取权限;处理CORS和CSP策略避免跨域拦截;最后通过onerror回调、备用链接和alt文本等容错机制提升页面鲁棒性。 当网页需要加载图片、样式表、脚本或字体等外部资源时,可能会遇到引用失败的问…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信