当前位置:首页 > JavaScript

实现js数组排序

2026-03-16 07:54:22JavaScript

数组排序方法

JavaScript提供了多种数组排序方法,可以根据不同需求选择合适的排序方式。

使用sort()方法

默认的sort()方法将元素转换为字符串后按Unicode码点排序:

实现js数组排序

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

对于数字排序需要自定义比较函数:

const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b); // 升序 [1, 5, 40, 100]
numbers.sort((a, b) => b - a); // 降序 [100, 40, 5, 1]

对象数组排序

可以根据对象属性进行排序:

实现js数组排序

const items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 }
];
items.sort((a, b) => a.value - b.value); // 按value升序
items.sort((a, b) => a.name.localeCompare(b.name)); // 按name字母顺序

实现稳定排序

ES2019后sort()已经是稳定排序,对于相同值的元素会保持原始顺序:

const data = [
  { name: 'A', order: 1 },
  { name: 'B', order: 1 } // 相同order值会保持原始顺序
];
data.sort((a, b) => a.order - b.order);

自定义排序算法

可以实现常见排序算法如快速排序:

function quickSort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[0];
  const left = [];
  const right = [];

  for (let i = 1; i < arr.length; i++) {
    arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
  }

  return [...quickSort(left), pivot, ...quickSort(right)];
}

性能考虑

对于大型数组,内置sort()方法通常比自定义实现更快,因为它是用底层语言优化的。V8引擎使用TimSort算法,时间复杂度为O(n log n)。

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

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…