当前位置:首页 > JavaScript

js实现乱序

2026-02-01 06:25:06JavaScript

数组乱序的实现方法

使用 Fisher-Yates 算法可以高效地实现数组乱序。该算法通过遍历数组并随机交换元素位置来实现乱序。

js实现乱序

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 方法的简化实现

通过比较随机数来实现数组排序,这种方法代码简洁但效率较低。

js实现乱序

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

生成随机索引的乱序方法

创建一个新数组,从原数组中随机选取元素放入新数组。

function randomIndexShuffle(array) {
  const shuffled = [];
  const copy = [...array];

  while (copy.length > 0) {
    const randomIndex = Math.floor(Math.random() * copy.length);
    shuffled.push(copy.splice(randomIndex, 1)[0]);
  }

  return shuffled;
}

性能考虑

Fisher-Yates 算法的时间复杂度为 O(n),是最优的乱序算法。sort 方法的时间复杂度为 O(n log n),适合小型数组。随机索引方法需要额外的空间复杂度。

应用场景

Fisher-Yates 适用于大型数据集的乱序需求。sort 方法适合快速实现小型数组乱序。随机索引方法在需要保留原数组时适用。

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…