当前位置:首页 > JavaScript

js实现排序

2026-01-16 12:13:51JavaScript

数组排序方法

JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。

const numbers = [3, 1, 4, 1, 5, 9];
numbers.sort((a, b) => a - b); // 升序排序 [1, 1, 3, 4, 5, 9]
numbers.sort((a, b) => b - a); // 降序排序 [9, 5, 4, 3, 1, 1]

对象数组排序

对于对象数组,可根据对象的某个属性进行排序。

js实现排序

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按年龄升序

字符串排序

字符串排序默认按字母顺序排列,可通过localeCompare实现更复杂的排序逻辑。

js实现排序

const fruits = ['banana', 'Apple', 'orange'];
fruits.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
// 不区分大小写的排序 ['Apple', 'banana', 'orange']

自定义排序算法

实现快速排序算法示例:

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++) {
    arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
  }
  return [...quickSort(left), pivot, ...quickSort(right)];
}

稳定排序实现

ES2019后Array.prototype.sort保证稳定性。如需手动实现稳定排序,可保留原始索引:

function stableSort(arr, compare) {
  const indexedArr = arr.map((v, i) => [v, i]);
  indexedArr.sort((a, b) => compare(a[0], b[0]) || a[1] - b[1]);
  return indexedArr.map(v => v[0]);
}

性能考虑

对于大数据量排序,快速排序和归并排序通常比内置sort()更高效。V8引擎的sort()方法使用Timsort算法(混合归并和插入排序),时间复杂度为O(n log n)。

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现tab选项卡切换

js实现tab选项卡切换

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

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…