要随机打乱 JavaScript 数组,可以使用 Fisher-Yates 随机算法或现有的现成方法。以下是两种常见的方法:
1. Fisher-Yates 随机算法Fisher-Yates 算法是一种用于将数组随机打乱的有效算法,步骤如下:
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
// 使用示例
const array = [1, 2, 3, 4, 5];
const shuffledArray = shuffleArray(array);
console.log(shuffledArray); 2. 使用现有的方法可以使用现有的方法,如 Array.prototype.sort() 结合 Math.random() 方法来实现数组的随机打乱:
function shuffleArray(array) {
return array.slice().sort(() => Math.random() - 0.5);
}
// 使用示例
const array = [1, 2, 3, 4, 5];
const shuffledArray = shuffleArray(array);
console.log(shuffledArray); 注意事项这两种方法都会改变原始数组,如果需要保留原始数组,应在打乱数组之前创建数组的一个副本。Fisher-Yates 算法是一种常用的随机打乱数组的方法,效率较高且不会导致重复性问题。通过使用以上两种方法之一,您可以轻松地实现 JavaScript 数组的随机打乱操作。希望这些信息能够帮助您。
网友回复
如何修改别人发给我的微信笔记内容?
fbx、obj、glb三维格式模型如何在浏览器中通过three相互转换格式?
python如何实现基于http隧道加密的正向代理服务?
有没有有专门针对 UI 界面截图进行智能标记(Set-of-Mark, SoM) 的开源库和工具?
如何用python实现Set-of-Mark (SoM) 技术?
python如何截取windows指定应用的窗口截图,不用管窗口是不是在最前面?
linux能不能给rm删除命令增加回收站功能,可恢复被删文件?
bfwsoa如何在命令行中执行控制器动作器方法?
RAG(检索增强生成)和 KG(知识图谱)有啥不同?
KVM硬件是啥?


