JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)

目录

JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)

一、为什么要使用Array.sort()

Array.sort() 是 JavaScript 提供的一个内置数组排序方法。它不仅仅是一个简单的升序或降序排列工具,更是一种灵活的排序逻辑实现方式。通过深入了解和掌握 Array.sort() 的用法,我们可以结合其他数组方法,实现复杂的数据操作和性能优化。本文将从基础语法讲起,逐步深入探讨 Array.sort() 的高级用法,并展示其在实际开发中的多样化应用。

二、Array.sort() 的使用与技巧

1、基础语法

Array.sort() 方法对数组元素进行原地排序,并返回排序后的数组。默认情况下,sort() 方法会将数组元素转换为字符串,并按照字典顺序进行排序。

array.sort([compareFunction]);

compareFunction(可选):定义排序顺序的函数,接收两个参数 ab

  • 如果返回值小于 0,则 a 排在 b 前面。
  • 如果返回值大于 0,则 b 排在 a 前面。
  • 如果返回值为 0,则两者位置不变。

2、返回值

Array.sort() 会根据比较函数的规则修改原数组,直至排序完成,不会创建新的数组。

3、使用技巧

Array.sort() 的核心在于比较函数,通常需要我们根据实际需求编写比较函数。

直接比较数字数组时,可能会出现 "10" < "6" 的情况,因为在字符串比较中,比较是从第一位开始的,"1" 在 "6" 前面,所以 "10" < "6"。

const numbers = [25, 100, 9, 2];
numbers.sort();
console.log(numbers); 
// 输出:[100, 2, 25, 9] (按照字典序排序)

若要对数字数组进行排序,可以编写一个简单的比较函数。

const numbers = [25, 100, 9, 2];
numbers.sort((a, b) => a - b); // 升序排序
console.log(numbers); 
// 输出:[2, 9, 25, 100]

三、Array.sort() 的复杂用法与实际应用案例

1、多字段排序(适用于对象元素的数组,数据库排序)

在实际开发中,我们经常需要根据多个字段对数据对象进行排序。例如,一个用户列表可能需要先按角色排序,再按用户名排序。

const users = [
  { name: 'Alice', age: 25, role: 'user' },
  { name: 'Bob', age: 22, role: 'admin' },
  { name: 'Charlie', age: 35, role: 'user' },
  { name: 'Dave', age: 30, role: 'admin' },
];

// 按角色升序,角色相同时按年龄升序
users.sort((a, b) => {
  if (a.role === b.role) {
    return a.age - b.age; // 按年龄升序
  }
  return a.role.localeCompare(b.role); // 按角色字典序
});

console.log(users);
/*
输出:
[
  { name: 'Bob', age: 22, role: 'admin' },
  { name: 'Dave', age: 30, role: 'admin' },
  { name: 'Alice', age: 25, role: 'user' },
  { name: 'Charlie', age: 35, role: 'user' }
]
*/

2、按日期排序

可以通过将日期字符串转换为 Date 对象来实现排序。

const events = [
  { name: 'Event A', date: '2024-11-20' },
  { name: 'Event B', date: '2023-12-25' },
  { name: 'Event C', date: '2024-01-01' },
];

events.sort((a, b) => new Date(a.date) - new Date(b.date));
console.log(events);
/*
输出:
[
  { name: 'Event B', date: '2023-12-25' },
  { name: 'Event C', date: '2024-01-01' },
  { name: 'Event A', date: '2024-11-20' }
]
*/

3、排序稳定性

从 ECM

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4562.html

(0)
LomuLomu
上一篇 2024 年 12 月 28 日
下一篇 2024 年 12 月 28 日

相关推荐

  • Java集成Dify AI服务的客户端工具包

    项目源码 Dify Java SDK是为Java开发者设计的开源工具包,专门用于与Dify AI平台的无缝对接。该工具包全面覆盖了Dify平台的各项API功能,使开发者能够便捷地在Java应用中调用AI服务。 核心功能 本工具包具备以下主要特性: 1. 多场景应用支持 智能对话系统:通过专用接口实现多轮对话管理 文本自动生成:支持各类文本内容的智能创作 流程…

    未分类 2025 年 5 月 13 日
    38200
  • 用 Cursor 写出第一个程序

    大家好,我是汤师爷 最近几个月,Cursor迅速走红,成为一款强大的编程助手。Cursor不仅使用简单,而且通过集成各种大模型技术,编程能力一流。 Cursor是什么? Cursor是一个类似VSCode的编辑器,集成了GPT-4、Claude 3.5等LLM模型。它本质上是在VSCode的基础上添加了AI辅助编程功能。 从界面布局到操作方式都与VSCode…

    2024 年 12 月 30 日
    39200
  • 新版 Cursor 把其他 AI 编程工具按在地上摩擦了!

    大家好,我是汤师爷~ AI编程助手Cursor背后的Anysphere公司刚刚完成了1亿美元的B轮融资,估值直接飙升至26亿美元。 四个月前,这家公司刚拿下6000万美元,估值还只有4亿美元。如今,增长6.5倍,这速度,简直让人怀疑开挂了。 Anysphere不仅融资拿到手软,收入增长更是逆天。 公司从4月的年收入400万美元,短短六个月后,10月的月收入竟…

    2025 年 1 月 12 日
    66500
  • 什么是南北向流量和东西向流量?

    在云计算和微服务架构中,南北向流量和东西向流量是两种常见的流量模式。 南北向流量(North-South Traffic) 定义:南北向流量指的是从外部进入系统内部或从系统内部出去的流量,通常是客户端到服务器之间的通信,例如用户通过浏览器或移动应用访问 Web 服务或 API。 特点:这种流量穿过系统的边界,如从外部网络进入内部网络,或者反过来。它通常受到安…

    未分类 2024 年 12 月 31 日
    30200
  • 2024年主流使用的JDK版本及其核心特性介绍

    原文全文详见个人博客:https://www.coderli.com/feature-of-popular-jdk-version/2024年主流使用的JDK版本及其核心特性介绍在群里交流的时候,经常遇到不同同学使用的JDK版本五花八门,并且很多不知道其使用版本的特点。作为Java开发者,理解不同JDK版本的核心特性和优势不仅能提高我们的开发效率,还能帮助我…

    2024 年 12 月 28 日
    56800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信