怎样用JavaScript实现数组排序?

2025-05-09 10

在 JavaScript 中,可以通过多种方式实现数组排序。以下是常见的几种方法:


1. 使用 Array.prototype.sort() 方法

这是最直接的排序方法,但需要注意默认行为:

const arr = [3, 1, 4, 2];
arr.sort(); // 默认按 Unicode 码点升序排列
console.log(arr); // 输出: [1, 2, 3, 4]

问题:默认排序可能不符合预期

const arr = [10, 5, 100];
arr.sort();
console.log(arr); // 输出: [10, 100, 5](因为按字符串比较)

解决方案:自定义比较函数

// 升序排列
arr.sort((a, b) => a - b);

// 降序排列
arr.sort((a, b) => b - a);

2. 手动实现排序算法(如快速排序)

如果需要自定义排序逻辑,可以手动实现算法:

快速排序示例

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++) {
    if (arr[i] < pivot) left.push(arr[i]);
    else right.push(arr[i]);
  }

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

console.log(quickSort([3, 1, 4, 2])); // 输出: [1, 2, 3, 4]

3. 对对象数组按属性排序

const users = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 20 },
  { name: "Charlie", age: 30 }
];

// 按 age 升序
users.sort((a, b) => a.age - b.age);

// 按 name 字母顺序
users.sort((a, b) => a.name.localeCompare(b.name));

4. 注意事项

  • sort() 会修改原数组(非纯函数)。
  • 对大型数组,建议使用内置 sort()(浏览器已优化)。
  • 稳定排序:ES2019 规定 sort() 必须稳定(相同值保持原始顺序)。

  • 简单排序:直接用 arr.sort((a, b) => a - b)
  • 复杂需求:自定义比较函数或实现特定算法
  • 对象排序:通过属性比较

(www.nzw6.com)

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关