当前位置:首页 > JavaScript

实现js数组排序

2026-02-03 06:54:13JavaScript

使用 Array.prototype.sort() 方法

JavaScript 数组的 sort() 方法是实现排序的最直接方式。默认情况下,sort() 将元素转换为字符串并按照 Unicode 码点顺序排序。对于数字排序,需自定义比较函数。

const numbers = [3, 1, 4, 1, 5, 9, 2, 6];
numbers.sort((a, b) => a - b); // 升序:[1, 1, 2, 3, 4, 5, 6, 9]
numbers.sort((a, b) => b - a); // 降序:[9, 6, 5, 4, 3, 2, 1, 1]

自定义对象数组排序

对于对象数组,可以通过比较对象的某个属性值实现排序。

实现js数组排序

const users = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按 age 升序

实现稳定排序

默认的 sort() 方法在某些浏览器中可能不稳定(相同元素的相对顺序可能改变)。为实现稳定排序,可扩展比较逻辑:

const data = [
  { value: 1, priority: 1 },
  { value: 2, priority: 0 },
  { value: 3, priority: 1 }
];
data.sort((a, b) => {
  if (a.priority === b.priority) return 0; // 保持原始顺序
  return a.priority - b.priority;
});

按字符串属性排序

对字符串属性排序需使用 localeCompare() 方法处理大小写和语言差异:

实现js数组排序

const items = ['résumé', 'Rose', 'house', 'Hotel'];
items.sort((a, b) => a.localeCompare(b, 'en', { sensitivity: 'base' }));
// 结果:['house', 'Hotel', 'résumé', 'Rose']

多条件排序

通过组合多个比较条件实现复杂排序:

const products = [
  { name: 'Laptop', price: 800, stock: 4 },
  { name: 'Phone', price: 500, stock: 10 },
  { name: 'Tablet', price: 800, stock: 5 }
];
products.sort((a, b) => {
  if (a.price !== b.price) return a.price - b.price;
  return b.stock - a.stock; // 价格相同时按库存降序
});

性能注意事项

对于大规模数据(超过 10^5 个元素),sort() 的时间复杂度为 O(n log n)。若需更高性能,可考虑:

  • 使用 TypedArray 处理数值数据
  • 对于已知范围的小整数,使用计数排序等线性算法
  • 使用 Web Workers 避免阻塞主线程

标签: 数组js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…