当前位置:首页 > JavaScript

实现js sort

2026-03-13 19:19:25JavaScript

JavaScript 数组排序方法

JavaScript 提供了 Array.prototype.sort() 方法用于对数组元素进行排序。默认情况下,sort() 方法将元素转换为字符串并按 Unicode 码点升序排列。对于数字或其他复杂排序,需要自定义比较函数。

基本用法(默认排序)

默认排序会将元素转换为字符串后比较:

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

数字排序

直接使用 sort() 对数字排序会得到错误结果,因为默认按字符串比较:

const numbers = [40, 100, 1, 5, 25];
numbers.sort();
console.log(numbers); // [1, 100, 25, 40, 5](错误结果)

需要使用比较函数实现正确数字排序:

const numbers = [40, 100, 1, 5, 25];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // [1, 5, 25, 40, 100]

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

对象数组排序

对于对象数组,可以根据某个属性值排序:

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

// 按 age 升序
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 = ['apple', 'Banana', 'cherry', 'Date'];
names.sort();
console.log(names); // ['Banana', 'Date', 'apple', 'cherry']

如需不区分大小写排序:

const names = ['apple', 'Banana', 'cherry', 'Date'];
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(names); // ['apple', 'Banana', 'cherry', 'Date']

稳定性说明

从 ES2019 开始,sort() 被要求是稳定排序(相同值的元素相对顺序保持不变)。这在排序对象数组时特别有用:

实现js   sort

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

// 按 age 排序后,Alice 和 Bob 的相对顺序保持不变
data.sort((a, b) => a.age - b.age);

性能注意事项

sort() 的时间复杂度取决于具体实现,现代浏览器通常使用高效的排序算法(如 TimSort)。对于大型数组,可能需要考虑性能优化。

标签: jssort
分享给朋友:

相关文章

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

利用js实现

利用js实现

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

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js验证码的实现

js验证码的实现

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