当前位置:首页 > JavaScript

sort js实现

2026-04-06 09:01:50JavaScript

sort js实现

在JavaScript中,数组的排序可以通过Array.prototype.sort()方法实现。该方法默认将元素转换为字符串并按照Unicode码点排序,但也可以接受自定义比较函数以实现更复杂的排序逻辑。

基本用法

默认情况下,sort()方法会将数组元素转换为字符串后排序:

const fruits = ['banana', 'apple', 'orange'];
fruits.sort(); // ['apple', 'banana', 'orange']

对于数字数组,直接使用sort()会得到错误结果(按字符串比较):

const numbers = [10, 2, 5];
numbers.sort(); // [10, 2, 5](错误结果)

自定义比较函数

通过传递比较函数,可以实现数字或其他复杂类型的正确排序:

const numbers = [10, 2, 5];
numbers.sort((a, b) => a - b); // [2, 5, 10](升序)
numbers.sort((a, b) => b - a); // [10, 5, 2](降序)

对象数组排序

对对象数组排序时,需在比较函数中指定属性:

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

多条件排序

通过扩展比较函数逻辑,可以实现多条件排序:

sort js实现

const items = [
  { name: 'apple', price: 10, weight: 1 },
  { name: 'orange', price: 15, weight: 2 },
  { name: 'banana', price: 10, weight: 3 }
];
items.sort((a, b) => {
  if (a.price !== b.price) return a.price - b.price;
  return a.weight - b.weight;
}); // 先按价格升序,价格相同则按重量升序

注意事项

  • sort()会修改原数组,如需保留原数组需先拷贝:
    const original = [3, 1, 2];
    const sorted = [...original].sort();
  • 对中文排序需使用localeCompare
    const names = ['张三', '李四', '王五'];
    names.sort((a, b) => a.localeCompare(b, 'zh'));
  • 大数组排序可能涉及性能问题,需考虑算法优化或分批处理。

标签: sortjs
分享给朋友:

相关文章

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

使用js实现

使用js实现

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

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…