当前位置:首页 > 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() 会将数值转换为字符串排序,可能导致错误结果。例如:

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

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

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 升序排序

自定义排序逻辑

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

实现js sort()

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实现轮播图

js实现轮播图

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

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…