当前位置:首页 > 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实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…