当前位置:首页 > JavaScript

实现js sort()

2026-03-02 06:04:33JavaScript

JavaScript 的 sort() 方法

sort() 是 JavaScript 数组的一个内置方法,用于对数组元素进行排序。默认情况下,sort() 将元素转换为字符串并按照 Unicode 码点顺序排序。这种默认行为可能不符合数值排序的需求,因此通常需要自定义比较函数。

基本语法

array.sort([compareFunction])
  • compareFunction(可选):定义排序顺序的函数。如果省略,元素将被转换为字符串并按 Unicode 码点排序。

默认排序(字符串排序)

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

数值排序

默认情况下,sort() 会将数值转换为字符串排序,可能导致错误结果。例如:

实现js sort()

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

正确的数值排序需要使用比较函数:

实现js sort()

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

numbers.sort((a, b) => b - a);
console.log(numbers); // [10, 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);
console.log(users); // 按 age 升序排序

自定义排序逻辑

比较函数可以包含更复杂的逻辑。例如,按字符串长度排序:

const words = ['apple', 'banana', 'grape', 'orange'];
words.sort((a, b) => a.length - b.length);
console.log(words); // ['apple', 'grape', 'banana', 'orange']

注意事项

  • sort() 会修改原数组,而不是返回新数组。
  • 对于大型数组,自定义比较函数可能影响性能。
  • 排序稳定性(相同值的相对顺序)在 ES2019 后得到保证。

标签: jssort
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…