当前位置:首页 > JavaScript

js sort实现

2026-03-01 04:15:09JavaScript

JavaScript 数组排序实现

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

默认排序(字符串排序)

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

数字升序排序

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

数字降序排序

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

对象数组排序

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

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

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

稳定排序实现

从 ES2019 开始,JavaScript 要求 sort() 方法必须是稳定排序(相同元素的相对位置保持不变)。对于需要稳定排序的旧环境,可以手动实现:

function stableSort(array, compare) {
  const stabilized = array.map((el, index) => ({ el, index }));
  stabilized.sort((a, b) => {
    const order = compare(a.el, b.el);
    if (order !== 0) return order;
    return a.index - b.index;
  });
  return stabilized.map(entry => entry.el);
}

多条件排序

const items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'Edward', value: 12 }
];

items.sort((a, b) => {
  if (a.name > b.name) return 1;
  if (a.name < b.name) return -1;
  return a.value - b.value;
});

本地化字符串排序

const items = ['réservé', 'Premier', 'Cliché', 'communiqué'];
items.sort((a, b) => a.localeCompare(b, 'fr', { sensitivity: 'base' }));

注意事项

  • sort() 方法会修改原数组
  • 比较函数应返回负数、零或正数
  • 对于大型数据集,可能需要考虑性能优化
  • 默认排序时间复杂度通常为 O(n log n),但具体实现取决于 JavaScript 引擎

js sort实现

标签: jssort
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现二叉树

js实现二叉树

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

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现自举

js实现自举

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

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一…