当前位置:首页 > JavaScript

js 实现排序

2026-03-02 07:08:08JavaScript

JavaScript 实现排序的方法

JavaScript 提供了多种排序方式,包括内置方法和自定义排序算法。以下是常见的实现方式:

使用 Array.prototype.sort()

JavaScript 数组自带 sort() 方法,默认按 Unicode 码点排序:

const arr = [3, 1, 4, 2];
arr.sort(); // 默认排序
console.log(arr); // [1, 2, 3, 4]

对于数字排序需要传入比较函数:

js 实现排序

const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // [1, 5, 40, 100]

实现快速排序算法

快速排序是高效的排序算法(平均时间复杂度 O(n log n)):

function quickSort(arr) {
  if (arr.length <= 1) return arr;

  const pivot = arr[0];
  const left = [];
  const right = [];

  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) left.push(arr[i]);
    else right.push(arr[i]);
  }

  return [...quickSort(left), pivot, ...quickSort(right)];
}

console.log(quickSort([3,6,8,10,1,2,1])); // [1, 1, 2, 3, 6, 8, 10]

实现冒泡排序

冒泡排序是简单的排序算法(时间复杂度 O(n²)):

js 实现排序

function bubbleSort(arr) {
  let swapped;
  do {
    swapped = false;
    for (let i = 0; i < arr.length - 1; i++) {
      if (arr[i] > arr[i + 1]) {
        [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]];
        swapped = true;
      }
    }
  } while (swapped);
  return arr;
}

console.log(bubbleSort([5, 3, 8, 4, 2])); // [2, 3, 4, 5, 8]

对象数组排序

对对象数组按特定属性排序:

const users = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 22 },
  { name: 'Bob', age: 30 }
];

users.sort((a, b) => a.age - b.age);
console.log(users);
// 输出按年龄升序排列的对象数组

稳定排序实现

ES2019 开始 sort() 已经是稳定排序,如需自行实现:

function stableSort(arr, compare) {
  return arr
    .map((item, index) => ({ item, index }))
    .sort((a, b) => compare(a.item, b.item) || a.index - b.index)
    .map(({ item }) => item);
}

这些方法涵盖了 JavaScript 中大多数排序需求,从简单到复杂场景均可适用。

标签: js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js 实现vue

js 实现vue

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

js实现自举

js实现自举

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

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…