当前位置:首页 > JavaScript

实现sort js

2026-01-31 14:04:29JavaScript

实现 JavaScript 排序

JavaScript 提供了多种排序方法,可以根据不同需求选择适合的实现方式。以下是常见的几种方法:

使用 Array.prototype.sort()

JavaScript 数组原生提供 sort() 方法,默认按字符串 Unicode 码点排序。对于数字排序,需要传入比较函数:

实现sort js

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

自定义比较函数

对于复杂对象的排序,可以自定义比较逻辑:

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 字母顺序

实现稳定排序

原生 sort() 在某些浏览器中不稳定,可以通过添加索引实现稳定排序:

实现sort js

const stableSort = (arr, compare) => {
  const indexedArr = arr.map((item, index) => ({ item, index }));
  indexedArr.sort((a, b) => compare(a.item, b.item) || a.index - b.index);
  return indexedArr.map(({ item }) => item);
};

性能优化

对于大型数组,可以考虑非比较排序算法如计数排序或桶排序:

function countingSort(arr) {
  const max = Math.max(...arr);
  const count = Array(max + 1).fill(0);
  arr.forEach(num => count[num]++);
  const result = [];
  count.forEach((freq, num) => {
    for (let i = 0; i < freq; i++) {
      result.push(num);
    }
  });
  return result;
}

多条件排序

当需要按多个属性排序时,可以链式比较:

const people = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 }
];
people.sort((a, b) => {
  const nameCompare = a.name.localeCompare(b.name);
  return nameCompare !== 0 ? nameCompare : a.age - b.age;
});

选择排序方法时应考虑数据规模、排序稳定性以及性能需求。原生 sort() 适合大多数场景,特殊需求时可选择自定义实现。

标签: sortjs
分享给朋友:

相关文章

js 实现继承

js 实现继承

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

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…