js 关于数组排序的方法

在JavaScript中,数组排序主要有两种主要方法:Array.prototype.sort() 和自定义排序函数。

  1. Array.prototype.sort()

sort() 方法按照字符串Unicode码点顺序对数组元素进行排序,并返回数组。对于非字符串类型的数组元素,sort() 方法会先将它们转换为字符串,然后再进行排序。

基本用法:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort();
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9],因为元素被转换为字符串后再排序

但是,如果你希望按数字大小排序,你可以提供一个比较函数作为 sort() 的参数:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort(function(a, b) {
return a - b; // 升序排序
});
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9]

如果你希望降序排序,只需改变比较函数的返回值:

 

javascript复制代码

let arr = [5, 2, 9, 1, 5, 6];
arr.sort(function(a, b) {
return b - a; // 降序排序
});
console.log(arr); // 输出: [9, 6, 5, 5, 2, 1]
  1. 自定义排序函数

虽然 sort() 方法足以满足大多数排序需求,但你也可以编写自己的排序函数。这通常涉及到使用如冒泡排序、插入排序、选择排序、快速排序等算法。但请注意,对于大型数组,JavaScript内置的 sort() 方法(当使用正确的比较函数时)通常比简单的自定义排序算法更有效。

例如,一个简单的冒泡排序实现可能如下所示:

 

javascript复制代码

function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) { // 相邻元素两两对比
let temp = arr[j + 1]; // 元素交换
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
let arr = [5, 2, 9, 1, 5, 6];
arr = bubbleSort(arr);
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9]

但请注意,对于大型数组,这种简单的冒泡排序实现可能不是最高效的。在实际应用中,你通常会使用更先进的排序算法,或者简单地使用JavaScript内置的 sort() 方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springcloud第4季 springcloud-alibaba之sentinel2

一 sentinel实操实例 1.1 sentinel作用 sentinel是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障服务的稳定性。

使用Java动态创建Flowable会签模型

theme: channing-cyan 在企业级应用开发中&#xff0c;工作流管理系统如Flowable扮演着至关重要的角色&#xff0c;特别是在自动化业务流程、任务分配和审批流程设计上。动态创建流程模型&#xff0c;尤其是会签&#xff08;Parallel Gateway&#xff09;模型&#xff0c;是提…

大模型LLM:最清晰解读提示工程(Prompt Engineering)

提示工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也称为上下文提示&#xff0c;是一种通过不更新模型的权重/参数来引导LLM行为朝着特定结果的方法。这是与AI有效交流所需结果的过程。提示工程可以用于各种任务&#xff0c;从回答问题到算术推理乃至各种应用领…

【触摸案例-手势解锁案例-按钮高亮 Objective-C语言】

一、我们来说这个self.btns,这个问题啊,为什么不用_btns, 1.我们说,在懒加载里边儿,经常是写下划线啊,_btns,为什么不写,首先啊,这个layoutSubviews:我们第一次,肯定会去执行这个layoutSubviews: 然后呢,去懒加载这个数组, 然后呢,接下来啊,走这一句话, 第一次…

邮件系统国产化,保障企业信息安全的重要举措

随着信息技术日益发展和成熟&#xff0c;企业信息化建设深入推进&#xff0c;企业信息化管理能力大幅提升&#xff0c;其中邮件系统在企业信息化建设中扮演着至关重要的角色。然而&#xff0c;长期以来&#xff0c;我国企业在邮件系统方面主要依赖于国外的产品&#xff0c;这不…

win11安装SQL Server 2012 企业版

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、硬件要求二、软件安装参考&#xff1…

C语言---操作符详解

1.操作符的分类 • 算术操作符&#xff1a; 、- 、* 、/ 、% • 移位操作符: > • 位操作符: & | ^ • 赋值操作符: 、 、 - 、 * 、 / 、% 、> 、& 、| 、^ • 单⽬操作符&#xff1a; &#xff01;、、--、&、*、、-、~ 、sizeof、(类型) • 关系操…

在windows下使用VS Code、CMake、Make进行代码编译

软件环境 Windows11VS CodeNoneCMake3.26.4-windows-x86_64MinGWNone 电脑系统配置 安装MinGW将MinGW安装文件夹中bin文件夹下的mingw32-make.exe复制并重命名为make.exe在文件夹中添加系统路径&#xff0c;具体位置为 系统->系统信息->高级系统设置->高级->环境…

Linux运维:centos环境变量

前言 在 Linux 运维工作中&#xff0c;管理环境变量是至关重要的一项任务。在 CentOS 环境下&#xff0c;正确配置环境变量可以使系统更加高效和易于管理。 本文将重点讨论 CentOS 环境下的环境变量设置&#xff0c;并就python的环境变量配置方案进行讲解&#xff08;不包含Ano…

生成式 AI 的发展方向,应当是 Chat 还是 Agent?

生成式AI的发展方向既可以是Chat&#xff08;聊天&#xff09;也可以是Agent&#xff08;智能代理&#xff09;&#xff0c;这两者并不是互斥的&#xff0c;而是可以相互补充和融合。 Chat&#xff08;聊天&#xff09;方向&#xff1a; 聊天机器人在过去几年中取得了显著的进…

cs客户端测试注意点

客户端安装卸载测试 安装测试 1、GUI测试&#xff1a;安装过程中所有的界面显示&#xff0c;提示信息等是否正确 2、兼容性测试&#xff1a;在不同的操作系统&#xff0c;不同配置的主机上能否正常安装 3、安装路径测试(软件不能自动安装的情况下)&#xff1a; 软件默认路…

YOLOv9中模块总结补充|SPPELAN

专栏相关代码&#xff1a;目前售价售价69.9&#xff0c;改进点80 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 1. SPPELAN SPPELAN是YOLOv9作者在SPPF的基础上创新的模块&#xff08;增加了一次…

基于STM32F401RET6智能锁项目(环境搭建)

工程搭建 MDK&#xff0c;固件库&#xff0c;芯片包下载 下载keil5&#xff0c;stm32f4xx的固件库以及stm32f4的芯片包 keil官网&#xff1a;https://www2.keil.com/mdk5/ stm32中国官网&#xff1a;https://www.stmcu.com.cn/ 创建工程 1、新建一个工程文件夹&#xff0c;…

【勘误】一个错误的快速排序实现

文章目录 问题一&#xff1a;不一致算法描述部分给出的分划实现完整程序部分给出的分划实现 问题二&#xff1a;不正确问题三&#xff1a;把循环条件改为 i < j 程序还是不正确正确的实现总结 从 10 10 10 年前我开始学 C 语言时我就认为快速排序并不是个简单的算法。相比于…

系统权限控制插件封装-实现系统权限控制插件化

背景&#xff1a;按照传统的开发方式方式&#xff0c;每次新开发一个系统&#xff0c;就需要花费大量时间精力去搭建权限控制模块&#xff0c;如果我们把权限控制这一整个模块都抽离成一个独立的权限控制插件&#xff0c;支持单命令安装&#xff0c;全面暴露参数与方法&#xf…

k8s 理论知识基本介绍

目录 一 k8s 理论前言 &#xff08;一&#xff09;微服务是什么 1&#xff0c;应用场景 2&#xff0c;API 是什么 &#xff08;二&#xff09;&#xff0c;微服务 如何做版本迭代 1. Docker镜像构建 2. 版本标记 3. Docker Registry 4. 环境一致性 5. 滚动更新…

美国海军部发布《海军科学与技术战略》

文章目录 前言一、战略目标二、美海军部科学与技术战略总体归纳(一)强化海上统治地位1、实现更快的技术收益2、应用颠覆性技术3、发挥海军部战略优势4、完善试验和兵棋推演机制(二)建立卓越战斗文化1、打造集合作战人员、科学家和工程师的团队2、强化合作和建设能力3、科学…

多进程编程

创建一对父子进程&#xff1a; 父进程负责向文件中写入 长方形的长和宽 子进程负责读取文件中的长宽信息后&#xff0c;计算长方形的面积 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #inc…

串口通信---了解

1 串口接线方式 RXD&#xff1a;数据输入引脚&#xff0c;数据接受&#xff1b;STC89系列对应P3.0口 TXD&#xff1a;数据发送引脚&#xff0c;数据发送&#xff1b;STC89系列对应P3.1口 接线方式 串口编程要素 输入/输出数据缓冲器叫做SBUF&#xff0c;都用99H地址码&#x…

Java文件与IO操作

1. 文件与IO操作 1.1 文件 什么是文件: 文件,对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件.excel文件...都是文件。它既可以保存一张图片,也可以保持视频,声音.… 1.1.1 文件流: 1.1.2 常用的文件操作: 创建文件对象相关构造器和方法: 案例&a…