当前位置:首页 > JavaScript

实现js sort()

2026-04-05 07:04:38JavaScript

JavaScript 的 sort() 方法

JavaScript 的 sort() 方法用于对数组的元素进行排序。默认情况下,sort() 方法将元素转换为字符串,并按照 Unicode 码点顺序进行排序。对于数字排序,可能需要自定义比较函数。

基本语法

array.sort([compareFunction])

默认排序(按 Unicode 码点)

如果不提供比较函数,sort() 会将元素转换为字符串并比较它们的 Unicode 码点顺序。

const fruits = ['banana', 'apple', 'orange', 'grape'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'grape', 'orange']

数字排序

默认情况下,数字也会被转换为字符串,可能导致意外的排序结果。

实现js sort()

const numbers = [10, 2, 100, 5];
numbers.sort();
console.log(numbers); // [10, 100, 2, 5]

使用比较函数

为了正确排序数字或其他自定义顺序,可以提供一个比较函数。比较函数接收两个参数 ab,返回值决定排序顺序:

  • 返回负数:a 排在 b 前面
  • 返回正数:b 排在 a 前面
  • 返回 0:顺序不变
const numbers = [10, 2, 100, 5];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // [2, 5, 10, 100]

numbers.sort((a, b) => b - a); // 降序
console.log(numbers); // [100, 10, 5, 2]

对象数组排序

比较函数也可以用于对象数组的排序。

实现js sort()

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 20 }
];

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

字符串排序(忽略大小写)

如果需要忽略大小写排序字符串,可以在比较函数中处理。

const names = ['Alice', 'bob', 'Charlie', 'dave'];
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(names); // ['Alice', 'bob', 'Charlie', 'dave']

稳定性

现代 JavaScript 引擎(ES2019 及以上)保证 sort() 是稳定的排序算法,即相等元素的相对顺序在排序前后保持不变。

性能

sort() 的时间复杂度取决于具体实现,通常为 O(n log n)。对于大型数组,可能需要考虑性能优化。

注意事项

  • sort() 会修改原数组,不会创建新数组。
  • 对于稀疏数组(包含 undefined 的元素),undefined 会被排到数组末尾。
  • 比较函数应确保逻辑一致,否则可能导致排序结果不稳定。

标签: jssort
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现轮播代码

js实现轮播代码

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

js实现排序

js实现排序

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