当前位置:首页 > JavaScript

js实现乱序

2026-04-05 22:54:03JavaScript

使用 sortMath.random 实现乱序

通过 Array.prototype.sort 结合 Math.random 实现简单乱序。Math.random() 生成 0 到 1 的随机数,sort 方法根据返回值决定排序顺序。

const array = [1, 2, 3, 4, 5];
const shuffled = array.sort(() => Math.random() - 0.5);
console.log(shuffled); // 输出乱序后的数组

注意:此方法在部分情况下可能无法保证完全均匀的随机性,适用于简单场景。

Fisher-Yates 洗牌算法

Fisher-Yates 算法是一种高效且均匀的乱序方法,通过遍历数组并随机交换元素实现。

function shuffle(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];
console.log(shuffle(array)); // 输出乱序后的数组

该方法的时间复杂度为 O(n),且能保证每个元素出现在每个位置的概率均等。

使用 lodash 库的 _.shuffle

如果需要快速实现且不关注底层细节,可以使用 lodash 提供的 _.shuffle 方法。

const _ = require('lodash');
const array = [1, 2, 3, 4, 5];
console.log(_.shuffle(array)); // 输出乱序后的数组

lodash 的实现基于 Fisher-Yates 算法,适合在项目中直接调用。

js实现乱序

注意事项

  • 均匀随机性sort 结合 Math.random 的方式可能在某些 JavaScript 引擎中分布不均匀,Fisher-Yates 是更可靠的选择。
  • 性能:对于大型数组,Fisher-Yates 算法性能优于 sort
  • 不可变操作:上述方法会修改原数组,如需保留原数组,可先创建副本:
    const shuffled = [...array].sort(() => Math.random() - 0.5);

标签: js
分享给朋友:

相关文章

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…