当前位置:首页 > JavaScript

js实现乱序

2026-03-14 04:50:34JavaScript

使用 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;
}

使用 sort() 结合随机数

这种方法利用比较函数的随机返回值实现乱序,但需要注意其随机性可能不够均匀。

function randomSort(array) {
  return array.sort(() => Math.random() - 0.5);
}

使用 lodash 库的 shuffle 方法

如果项目中已使用 lodash 库,可以直接调用其 shuffle 方法。

const _ = require('lodash');
const shuffled = _.shuffle([1, 2, 3, 4]);

创建新数组的乱序方法

该方法通过从原数组随机抽取元素构建新数组实现乱序。

function randomizeArray(array) {
  const newArray = [];
  while (array.length > 0) {
    const randomIndex = Math.floor(Math.random() * array.length);
    newArray.push(array.splice(randomIndex, 1)[0]);
  }
  return newArray;
}

性能考虑

对于大型数组,Fisher-Yates 算法是最优选择,时间复杂度为 O(n)。sort() 方法的时间复杂度为 O(n log n),而创建新数组的方法由于频繁使用 splice(),性能会受到影响。

js实现乱序

注意事项

Math.random() 生成的伪随机数不适合加密场景。在需要加密级随机性的情况下,应使用 crypto.getRandomValues()。

标签: js
分享给朋友:

相关文章

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…

js实现筛选

js实现筛选

JavaScript 实现数据筛选的方法 使用 Array.filter() 方法 Array.filter() 是 JavaScript 中最常用的筛选方法,它会创建一个新数组,包含通过回调函数测试…