新闻中心
J*aScript 实现数组随机显示且不重复

本文将介绍如何使用 J*aScript 实现一个数组的随机显示功能,点击按钮后,数组中的元素会依次随机显示在页面上,且不会重复显示同一个元素,直到所有元素都显示完毕。同时,提供重置按钮,以便重新开始随机显示。
核心思路
实现该功能的关键在于以下几点:
- 数组乱序(Shuffle): 在显示之前,需要对原始数组进行乱序处理,以保证每次显示的元素都是随机的。
- 索引控制: 使用一个索引变量来记录当前显示的元素位置,每次点击按钮后,索引递增。
- 边界判断: 在索引递增之前,需要判断索引是否超出数组的范围,如果超出,则不再显示任何元素。
- 重置功能: 提供一个重置按钮,点击后重新对数组进行乱序,并将索引重置为 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
字节跳动旗下的免费AI编程工具
339
查看详情
// 原始数组
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


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