当前位置:首页 > JavaScript

实现sort js

2026-01-31 14:04:29JavaScript

实现 JavaScript 排序

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

使用 Array.prototype.sort()

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

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() 在某些浏览器中不稳定,可以通过添加索引实现稳定排序:

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;
}

多条件排序

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

实现sort js

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实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

使用js实现

使用js实现

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

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…