当前位置:首页 > JavaScript

实现sort js

2026-04-05 06:13:07JavaScript

使用 Array.prototype.sort()

JavaScript 数组的 sort() 方法对数组元素进行原地排序,默认将元素转换为字符串后按 Unicode 码点排序。该方法接受一个可选比较函数。

const arr = [3, 1, 4, 1, 5, 9];
arr.sort(); // 默认排序: [1, 1, 3, 4, 5, 9]

自定义比较函数

通过提供比较函数可实现更复杂的排序逻辑。比较函数应返回:

  • 负数:a 应排在 b
  • 正数:b 应排在 a
  • 零:顺序不变
// 数字升序
arr.sort((a, b) => a - b);

// 数字降序
arr.sort((a, b) => b - a);

// 字符串排序
const strArr = ['banana', 'apple', 'cherry'];
strArr.sort(); // 默认按字母顺序

对象数组排序

对对象数组可按特定属性排序:

const users = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 22 }
];

// 按 age 升序
users.sort((a, b) => a.age - b.age);

// 按 name 字母顺序
users.sort((a, b) => a.name.localeCompare(b.name));

稳定排序实现

ES2019 要求 sort() 必须稳定(相同元素保持原有顺序)。如需自行实现稳定排序:

function stableSort(arr, compare) {
  return arr
    .map((item, index) => ({ item, index }))
    .sort((a, b) => compare(a.item, b.item) || a.index - b.index)
    .map(({ item }) => item);
}

性能优化

对大型数组可考虑以下优化:

  • 避免在比较函数中创建新对象
  • 对同类型数据使用类型特定的比较器
  • 对预排序数据使用插入排序等适应性算法

非ASCII字符排序

对含特殊字符的字符串应使用 localeCompare

实现sort js

const items = ['résumé', 'apple', 'éclair'];
items.sort((a, b) => a.localeCompare(b));

标签: sortjs
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现防洪

js实现防洪

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

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现密码

js实现密码

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