当前位置:首页 > 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中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现复制到剪贴板

js实现复制到剪贴板

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…