当前位置:首页 > JavaScript

js sort 实现

2026-02-28 23:19:38JavaScript

实现 JavaScript 数组排序的方法

JavaScript 提供了 Array.prototype.sort() 方法用于对数组元素进行排序。默认情况下,sort() 方法将元素转换为字符串并按照 Unicode 码点顺序排序。为了更灵活地排序,可以传入自定义的比较函数。

基本用法(默认排序)

默认排序会将元素转换为字符串,并按 Unicode 码点升序排列:

const arr = [10, 2, 5, 1, 9];
arr.sort(); // 结果为 [1, 10, 2, 5, 9]

自定义比较函数

通过传递比较函数,可以实现数字、对象或其他复杂排序逻辑。

数字升序排序
const arr = [10, 2, 5, 1, 9];
arr.sort((a, b) => a - b); // 结果为 [1, 2, 5, 9, 10]
数字降序排序
const arr = [10, 2, 5, 1, 9];
arr.sort((a, b) => b - a); // 结果为 [10, 9, 5, 2, 1]
对象数组排序

根据对象的某个属性排序:

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 20 }
];
users.sort((a, b) => a.age - b.age);
// 结果按 age 升序排列
字符串排序

按字母顺序排序(区分大小写):

const names = ['Zoe', 'Alice', 'bob', 'Charlie'];
names.sort(); // 结果为 ['Alice', 'Charlie', 'Zoe', 'bob']

不区分大小写的字符串排序:

const names = ['Zoe', 'Alice', 'bob', 'Charlie'];
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
// 结果为 ['Alice', 'bob', 'Charlie', 'Zoe']

稳定性

从 ES2019 开始,sort() 方法是稳定的,即对于相同值的元素,排序后的相对顺序与排序前一致。

原地排序

sort() 方法会修改原数组,而不会创建新数组。如果需要保留原数组,可以先复制一份:

js sort 实现

const original = [3, 1, 4, 2];
const sorted = [...original].sort();

性能说明

sort() 的时间复杂度取决于具体实现,现代浏览器通常使用高效的排序算法(如 TimSort)。对于大型数组,自定义比较函数的性能可能成为瓶颈。

标签: jssort
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现正交

js实现正交

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

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…