当前位置:首页 > 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,但不同浏览器可能需要添加前缀。 // 触发全屏…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现授权

js实现授权

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

java如何初始化数组

java如何初始化数组

初始化数组的方法 在Java中,数组可以通过多种方式进行初始化。以下是几种常见的方法: 静态初始化(直接赋值) 在声明数组时直接指定元素值,适用于已知数组内容的情况: int[] numbers…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…