当前位置:首页 > 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() 方法会修改原数组,而不会创建新数组。如果需要保留原数组,可以先复制一份:

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

性能说明

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

js sort 实现

标签: jssort
分享给朋友:

相关文章

js实现验证码

js实现验证码

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

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现轮播图

js实现轮播图

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js轮播图实现原理

js轮播图实现原理

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

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…