当前位置:首页 > JavaScript

js实现乱序

2026-02-01 06:25:06JavaScript

数组乱序的实现方法

使用 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 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),适合小型数组。随机索引方法需要额外的空间复杂度。

js实现乱序

应用场景

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

标签: js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现图

js实现图

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

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…