当前位置: 首页 > news >正文

数组排序sort()方法

sort() 方法对数组的项目进行排序。 

排序顺序可以是按字母或数字,也可以是升序(向上)或降序(向下)。

默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。

 

一、语法

array.sort(compareFunction)

 注释:sort() 方法会改变原始数组。

二、参数

可选。定义替代排序顺序的函数。

该函数应返回负值、零值或正值,具体取决于参数,例如:

function(a, b){ return a-b }

sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。

举例,a和b 两个将要被比较的元素:

如果 a-b 小于 0 ,那么 a 会被排列到 b 之前。

如果 a-b 等于 0 , a 和 b 的相对位置不变。

如果 a-b 大于 0 , b 会被排列到 a 之前。

简单的理解,就是: a-b升序         b-a 降序 

三、返回值 

排序后的数组。请注意,数组已原地排序,并且不进行复制。

四、应用

1、 未指明参数时

元素会按照转换为的字符串的各个字符的Unicode位点进行排序。

①  非数字:字符串排序,可以直接使用sort()方法

var fruits = ["Banana", "Orange", "Apple", "Mango", "Blueberries"];
fruits.sort(); // ["Apple", "Banana", "Blueberries", "Mango", "Orange"]
var arr = ['h','a','k','c','e'];
arr.sort();
console.log(arr)  // ["a", "c", "e", "h", "k"]

按字母顺序对数组进行排序,然后反转排序项的顺序(降序):

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
console.log(fruits) //  ["Orange", "Mango", "Banana", "Apple"]

② 数字 

var arr = [12, 22, 66, 3]
arr.sort()
console.log(arr) // [12, 22, 3, 66]

2、指明了参数时

数组会按照调用该函数的返回值进行排序

 ① 按 升序 对数组中的数字进行排序:a-b

var points = [4, 10, 1, 5, 25, 10];
points.sort(function(a, b){ return a-b });
console.log(points) // [1, 4, 5, 10, 10, 25]

 ② 按 降序 对数组中的数字进行排序:b-a

var points = [4, 10, 1, 5, 25, 10];
points.sort(function(a, b){ return b-a });
console.log(points) // [25, 10, 10, 5, 4, 1]

③ 获取数组中的最小值

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){ return a-b });    // 按升序对数组中的数字进行排序// 数组中的第一项 (points[0]) 现在是最小值

 ④ 获取数组中的最大值

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){ return b-a });    // 按降序对数组中的数字进行排序// 数组中的第一项 (points[0]) 现在是最大值

 ⑤ 根据对象的某个属性进行排序:

var arr = [{ name: 'W', age: 21 },{ name: 'M', age: 37 },{ name: 'X', age: 18 },{ name: 'M', age: -12 },{ name: 'J', age: 15 },{ name: 'B', age: 19 }];// 依据age排序
arr.sort(function(a, b) {return(a.age - b.age)
});
console.log(arr); // 0: {name: "M", age: -12}// 1: {name: "J", age: 15}// 2: {name: "X", age: 18}// 3: {name: "B", age: 19}// 4: {name: "W", age: 21}// 5: {name: "M", age: 37}// 依据name排序
arr.sort(function(a,b) {var nameA = a.name;var nameB = b.name;if(nameA < nameB) {return -1;}if(nameA > nameB) {return 1;}return 0;
})
console.log(arr); // 0: {name: "B", age: 19}// 1: {name: "J", age: 15}// 2: {name: "M", age: -12}// 3: {name: "M", age: 37}// 4: {name: "W", age: 21}// 5: {name: "X", age: 18}

⑥ 非ASCII字符排序(如类似 e, é, è, a, ä 等字符的字符串)

一些非英语的字符串,需要使用 String.localeCompare

var a = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
a.sort(function (a, b) {return a.localeCompare(b);
});console.log(a); // ["adieu", "café", "cliché", "communiqué", "premier", "réservé"]

 ⑦ 使用映射对含有大小写的字符串进行排序

    // 需要被排序的数组var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];// 对需要排序的数字和位置的临时存储var mapped = list.map(function(el, i) {return { index: i, value: el.toLowerCase() };})console.log(mapped) // 0: {index: 1, value: "delta"}// 1: {index: 3, value: "alpha"}// 2: {index: 2, value: "charlie"}// 3: {index: 0, value: "bravo"}// 按照多个值排序数组mapped.sort(function(a, b) {return +(a.value > b.value) || +(a.value === b.value) - 1;});console.log(mapped) // 0: {index: 1, value: "alpha"}// 1: {index: 3, value: "bravo"}// 2: {index: 2, value: "charlie"}// 3: {index: 0, value: "delta"}// 根据索引得到排序的结果var result = mapped.map(function(el){return list[el.index];});console.log(result); // ["alpha", "bravo", "CHARLIE", "Delta"]

 

 

相关文章:

数组排序sort()方法

sort() 方法对数组的项目进行排序。 排序顺序可以是按字母或数字&#xff0c;也可以是升序&#xff08;向上&#xff09;或降序&#xff08;向下&#xff09;。 默认情况下&#xff0c;sort() 方法将按字母和升序将值作为字符串进行排序。 一、语法 array.sort(compareFunct…...

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的&#xff0c;让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中&#xff0c;作为开发者你可能将面临几种改变&#xff1a; GPT 模型到来后&#xff0c;如何去架构好企业解决方案…...

散列查找实验(开散列) 题目编号:583

题目描述 请设计一个整型开散列表&#xff0c;散列函数为除留余数法&#xff0c;其中散列表的长度、除留余数法的模和关键码的个数由键盘输入&#xff0c;再根据输入由键盘输入所有的关键码。分别对三个待查值在散列表中进行查找&#xff0c;输出查找结果采用头插法。 输入描…...

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...

Go type关键字定义新类型和类型别名的区别

type关键字再定义类型和类型别名有很大的区别&#xff0c;前者是新定义一个数据类型&#xff0c;后者是对类型的重命名。 type NewString stringtype OldString stringtype NewString string声明了一个NewString类型&#xff0c;和string具有完全一致的数据结构&#xff0c;确…...

Neural Network学习笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…...

用@Value注解为bean的属性赋值

1.Value注解 Value注解的源码&#xff0c;如下所示 Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface Value {String value(); }从Value注解的源码中…...

拨云见日:深入理解 HTML 解析器与有限状态机

文章目录 参考描述状态机状态机有限状态机与无限状态机有限状态机与自动售货机无限状态机与计算器 HTML 解析器HTML 解析器HTML 与有限状态机 HTML 解析器的常见状态初始状态DOCTYPE 状态注释状态标签状态开始标签状态属性状态属性名状态属性值状态 结束标签状态自闭和标签状态…...

Java线程池及其实现原理

线程池概述 线程池&#xff08;Thread Pool&#xff09;是一种基于池化思想管理线程的工具&#xff0c;经常出现在多线程服务器中&#xff0c;如MySQL。 线程过多会带来额外的开销&#xff0c;其中包括创建销毁线程的开销、调度线程的开销等等&#xff0c;同时也降低了计算机…...

进程替换函数组介绍exec*

目录 前述 execl execlp execle execv execvp execvpe 前述 介绍后缀的意义&#xff1a; l &#xff08;list&#xff09;&#xff1a;表示参数采用列表。 v&#xff08;vector&#xff09;&#xff1a;参数同数组表示。 p&#xff08;path&#xff09;&#xff1a;自…...

欧科云链OKLink:2023年4月安全事件盘点

一、基本信息 2023年4月安全事件共造约6000万美金的损失&#xff0c;与上个月相比&#xff0c;损失金额有所降落&#xff0c;但安全事件数量依旧不减。其中&#xff0c;Yearn Finance因参数配置错误&#xff0c;导致了1000多万美金的损失。同时&#xff0c;有一些已经出现过的…...

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置&#xff08;可选…...

使用PyQt5设计一款简单的计算器

目录 一、环境配置&#xff1a; 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器&#xff0c;可以通过界面交互实现加减乘除的功能&#xff0c;希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况&#xff0c;htop就是一种互动式的进程查查看器&#xff0c;整齐用下来感觉比top的逼格高&#xff0c;造作可视化都更方便些&#xff0c;我觉得还…...

PostgreSQL Linux安装

安装依赖&#xff1a; sudo yum -y install readline-devel zlib-devel 安装Postgres&#xff1a; ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...

亚商投资顾问 早餐FM/0509车辆电动化

01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值&#xff0c;促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东&#xff1a;推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签&#xff1a;降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我&#xff0c;备注&#xff1a;aigc&#xff0c;拉你进群。 现在市面上AI绘图大概有三大阵营&#xff1a;Midjourney、Stable Diffusion&#xff0c;还有一个就是OpenAI实…...

学习笔记(2)项目结构描述 - manifest.json和pages.json

目录 1&#xff0c;manifest.json2&#xff0c;pages.json2.1&#xff0c;pages2.2&#xff0c;globalStyle2.3&#xff0c;tabBar 1&#xff0c;manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配&#xff0c;主要用于 DCloud 相关的云服务&#xff0c;请勿自行修…...

vector、deque、list相关知识点

vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间&#xff0c;并不添加新元素 deque 底层数据结构 动态开辟的二维数组&#xff0c;一维数组从2开始&#xff0c;以2倍方式扩容&#xff0c;每次扩容和&#x…...

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)

是什么&#xff1f; 我们平时的有线耳机接口分为USB的和Type-C的接口&#xff0c;但是手机的耳机插口却只有一个&#xff0c;像华为的耳机插口现在基本都是Type-c的&#xff0c;那如果我们现在只有USB接口的耳机怎么办呢&#xff0c;这个时候就需要使用到一个转换器&#xff0c…...

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...

100种思维模型之每日评估思维模型-58

曾子曰&#xff1a;吾日三省吾省&#xff0c;为人谋而不忠乎&#xff1f;与朋友交不信乎&#xff1f;传不习乎&#xff1f; 曾国藩&#xff0c;坚持每日写复盘日记&#xff0c;最后他用自己的实践经历向我们证明&#xff1a;一个智商很平庸、出身很普通且有着各种毛病的人&…...

libreoffice api

libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的&#xff…...

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试模型&a…...

如何写软件测试简历项目经验,靠这个面试都要赶场

一、前言&#xff1a;浅谈面试 面试是我们进入一个公司的门槛&#xff0c;通过了面试才能进入公司&#xff0c;你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试&#xff0c;得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...

【Linux】Linux下安装Mysql(图文解说详细版)

文章目录 前言第一步&#xff0c;进到opt文件夹下面&#xff0c;为什么&#xff1f;因为opt文件夹相当于Windows下的D://software第二步&#xff0c;用yum安装第三步&#xff0c;设置mysql的相关配置第四步&#xff0c;设置远程连接。第五步&#xff0c;更改mysql的语言第六步&…...

Cookie和Session的API、登录页面

目录 一、Cookie 和 Session 1、HttpServletRequest 类中的相关方法 2、HttpServletResponse 类中的相关方法 3、HttpSession 类中的相关方法 4、Cookie 类中的相关方法 二、网页登录 1、约定前后端交互接口 2、编写一个简单的登录页面 3、编写一个Servlet 来处理这个…...

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录&#xff1a;红黑…...

Spring IoC 深度学习

Io回顾 IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Jav…...

甘肃做网站多少钱/设计网站

本节书摘来自异步社区《现代体系结构上的UNIX系统&#xff1a;内核程序员的对称多处理和缓存技术&#xff08;修订版&#xff09;》一书中的第2章&#xff0c;第2.4节&#xff0c;作者&#xff1a;【美】Curt Schimmel著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公…...

wordpress =/seo的含义

Collection List Arraylist&#xff1a;Object数组Vector&#xff1a;Object数组LinkedList&#xff1a;双向循环链表 Set HashSet&#xff08;无序&#xff0c;唯一&#xff09;&#xff1a;基于 HashMap 实现的&#xff0c;底层采用 HashMap 来保存元素LinkedHashSet&…...

无锡网站建设技术/从事网络销售都有哪些平台呢

更多精彩内容请光临 www.leonarding.com《Oracle 数据结构知多少(一)》一 概念篇这里呢我只是把Oracle逻辑结构和物理结构所涉及到的segment段 extent区 block块的概念和相互管理简要的说明一下。Segment段&#xff1a;Oracle内部常叫“段对象”&#xff0c;凡是分配存储空间…...

网络营销发展现状与趋势/seo 优化

示意图&#xff1a; 黄线&#xff1a;太阳发出的平行光线 视觉范围可以使用一个立方体表示&#xff0c;左右确定宽度&#xff0c;上下确定高度&#xff0c;远近确定长度 引入&#xff1a; import * as dat from dat.gui //界面控制 关键代码&#xff1a; //平行光投射相机的属…...

做网站广告哪家好/国内搜索引擎优化的公司

目录 404&#xff1a; &#xff08;1&#xff09;访问资源路径错误&#xff1a; &#xff08;2&#xff09;classes项目输出路径错误&#xff1a; &#xff08;3&#xff09;tomcat没有配置上下文context&#xff1a; 404&#xff1a; &#xff08;1&#xff09;访问资源路径错…...

怎么登陆网站后台管理系统/公司排名seo

本期应邀官方说明算是指导最完整的教程原链接https://docs.unrealengine.com/zh-CN/Engine/HairRendering/XgenGuidelines/index.html另外一份通知今天被老板diss了因为找内容。。。另一个是这两天要肝月期模型了这里留个念想过两天就会发布直播所以定制内容要拖一些尽量日更希…...