当前位置:首页 > 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
分享给朋友:

相关文章

vue实现数组

vue实现数组

vue实现数组操作 在Vue中操作数组需要使用Vue提供的响应式方法,直接修改数组元素不会触发视图更新。以下是常见的数组操作方法: 添加元素 使用push、unshift或splice方法添加元素:…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…