当前位置:首页 > JavaScript

实现排序 js

2026-01-31 22:27:52JavaScript

数组排序方法

JavaScript 提供内置的 sort() 方法对数组排序。默认按字符串 Unicode 码点排序,需自定义比较函数处理数字或其他规则。

升序排列数字数组

const numbers = [3, 1, 4, 2];
numbers.sort((a, b) => a - b); // 输出 [1, 2, 3, 4]

降序排列数字数组

numbers.sort((a, b) => b - a); // 输出 [4, 3, 2, 1]

对象数组按属性排序

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

稳定排序实现

现代浏览器(如 Chrome、Firefox)的 sort() 已实现稳定排序(相同值保持原始顺序)。若需兼容旧环境,可通过索引辅助实现:

const data = ['apple', 'banana', 'Apple'];
data.map((item, index) => ({ item, index }))
    .sort((a, b) => a.item.localeCompare(b.item) || a.index - b.index)
    .map(({ item }) => item);

自定义排序算法示例

快速排序实现

实现排序 js

function quickSort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[0];
  const left = [], 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() 方法会修改原数组,需用 [...arr].sort() 避免副作用。
  • 对中文排序需使用 localeCompare
    ['中', '国', '人'].sort((a, b) => a.localeCompare(b, 'zh'));

标签: js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…