当前位置:首页 > JavaScript

js sort实现

2026-03-01 04:15:09JavaScript

js sort实现

JavaScript 数组排序实现

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

js sort实现

默认排序(字符串排序)

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 引擎

标签: jssort
分享给朋友:

相关文章

js实现vr

js实现vr

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

jquery js

jquery js

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

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

链表实现js

链表实现js

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

节流js实现

节流js实现

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

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…