当前位置:首页 > 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 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…