当前位置:首页 > JavaScript

js排序实现

2026-02-02 01:59:26JavaScript

JavaScript 数组排序基础

使用 Array.prototype.sort() 方法对数组进行排序。默认情况下,sort() 将元素转换为字符串并按 Unicode 码点排序:

const arr = [3, 1, 4, 2];
arr.sort(); // 输出: [1, 2, 3, 4](数字排序正确)
const strArr = ['banana', 'apple', 'cherry'];
strArr.sort(); // 输出: ['apple', 'banana', 'cherry']

自定义排序规则

通过传递比较函数实现复杂排序。比较函数接收参数 ab,返回负数、零或正数:

js排序实现

// 数字升序
const numbers = [10, 2, 5];
numbers.sort((a, b) => a - b); // 输出: [2, 5, 10]

// 数字降序
numbers.sort((a, b) => b - a); // 输出: [10, 5, 2]

// 对象数组按属性排序
const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按 age 升序

字符串排序的本地化支持

使用 localeCompare() 处理语言敏感的字符串排序(如忽略大小写或特定语言规则):

js排序实现

const fruits = ['Apple', 'banana', 'Cherry'];
fruits.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
// 输出: ['Apple', 'banana', 'Cherry'](不区分大小写)

稳定排序的实现

ES2019 后 sort() 稳定,但如需兼容旧环境,可通过索引保持稳定性:

const data = [
  { value: 2, priority: 1 },
  { value: 1, priority: 1 },
  { value: 3, priority: 2 }
];
// 添加索引辅助稳定排序
data.forEach((item, index) => item.index = index);
data.sort((a, b) => 
  a.priority - b.priority || a.index - b.index
);
// 相同 priority 的元素保持原始顺序

复杂多条件排序

结合多个属性或条件进行排序:

const tasks = [
  { title: 'Task A', priority: 'high', due: '2023-10-01' },
  { title: 'Task B', priority: 'low', due: '2023-09-01' }
];
tasks.sort((a, b) => {
  const priorityOrder = { high: 1, medium: 2, low: 3 };
  return (
    priorityOrder[a.priority] - priorityOrder[b.priority] ||
    new Date(a.due) - new Date(b.due)
  );
});
// 先按 priority 升序,再按日期升序

性能注意事项

  • 大规模数据排序时,考虑使用 TypedArray 或 Web Worker 避免阻塞主线程。
  • 对固定结构数据,预处理(如生成排序键)可能提升效率。

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

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

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…