Array.prototype.sort()排序,升降排序使用方法

news2024/11/19 7:40:37

sort() 方法对数组中的元素进行适当排序并返回数组。这种情况不一定稳定。默认排序顺序根据字符串 Unicode 代码点。

目录

 升序降序排序法

对象可以按照某个属性排序 


const months = ['March', 'Jan', 'Feb', 'Dec']
months.sort() // ['Dec', 'Feb', 'Jan', 'March']
console.log(months) // ["Dec", "Feb", "Jan", "March"]
 
const arr = [1, 30, 4, 21, 100000]
arr.sort()
console.log(arr) // [1, 100000, 21, 30, 4]

我们可以向 sort 方法传入一个指定按某种顺序进行排列的函数。

 升序降序排序法

// 按升序排序 从小到大排
arr.sort((a, b) => a - b) // [1, 4, 21, 30, 100000]
// 按降序排序 从大到小排
arr.sort((a, b) => b - a) // [100000, 30, 21, 4, 1]

注意:该方法会改变原数组。 

     在使用 Array.prototype.sort() 方法时,我们需要注意两点

    该方法默认会把数组中的所有元素先转换为 String 再排序。

    字符串根据 ASCII 码进行排序。

const months = ['March', 'Jan', 'Feb', 'Dec']
months.sort()
console.log(months) // ["Dec", "Feb", "Jan", "March"]

const arr = [1, 30, 4, 21, 100000]
array1.sort()
console.log(arr) // [1, 100000, 21, 30, 4]

    可以看到,原始值数组在排序时,会根据上面两点提到的规则进行排序。我们该如何解决?往下看。

    Array.prototype.sort() 是一个高阶函数,他可以传入一个指定按某种顺序进行排列的函数。

对象可以按照某个属性排序 

 根据不同的场景,您可能需要按键、值或日期字段对 JavaScript 数组对象进行排序。

 使用 Array.prototype.sort() 和 String.prototype.localeCompare() 对字符串数据进行排序。

let arr = [
  { name: 'HTML', dataTime: '1999-01-20' },
  { name : 'JavaScript', dataTime: '2023-07-22' },
  { name : 'CSS', dataTime: '2020-08-20' }
]
//按时间排序
const sortData = (data, order = 'asc') => {
  if(order == 'asc'){
    return data.sort((a, b) => a.dataTime.localeCompare(b.dataTime))
  } else {
    return data.sort((a, b) => b.dataTime.localeCompare(a.dataTime))
  }
  return data
}

console.log(sortData(arr))

 

 示例2:

	let arr2 = [{
					id:'001',
					name: 'HTML',
					dataTime: '1999-01-20'
				},
				{
					id:'003',
					name: 'JavaScript',
					dataTime: '2023-07-22'
				},
				{
					id:'004',
					name: 'vue',
					dataTime: '2022-08-20'
				},
				{
					id:'002',
					name: 'CSS',
					dataTime: '2020-08-20'
				},
			]
			const sortData2 = (data, order = 'asc') => {
				if (order == 'asc') {
					return data.sort((a, b) => a.id -b.id)
				} else {
					return data.sort((a, b) => b.id -a.id )
				}
				return data
			}

			console.log(sortData2(arr2))

 更多内容可查阅数组方法合集 数组方法

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

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

相关文章

聊聊GC是如何快速枚举根节点的

本文已收录至Github,推荐阅读 👉 Java随想录 世界上最快乐的事,莫过于为理想而奋斗。——苏格拉底 文章目录什么是根节点枚举根节点枚举存在的问题如何解决根节点枚举的问题安全点安全区域HotSpot使用的是可达性分析算法,该算法需…

ssm高校大学校园租赁平台的设计与实现java

当今社会,信息技术发展快速。同时,随着生活水平提高,学生有了更大的购买力,这就使得闲置物品增多,校园里物品更新快,使用周期短。而且传统的校园租赁平台,已经不能够满足学生的需求。学院校园租…

人工智能识别图片食物

一、准备食物图片(橘子和苹果)二、识别学习关键代码编写public static void study() throws Exception {//学习Picture picture new Picture();//图片解析类 图片(文件)-三通道矩阵Config config new Config();//现有的环境业务…

一文了解WebSocket及Springboot集成WebSocket

文章目录WebSocket是什么WebSocket通信原理和机制WebSocket协议是什么WebSocket协议和Http协议有什么区别WebSocket常用在那些场景Springboot集成WebSocketpom依赖java相关代码configcomponenthtml代码页面访问效果WebSocket是什么 🍊WebSocket是一种网络通信协议&…

Linux C编程

编写C代码 编辑器:vim,编写.c文件 编译 gcc 源文件 -o 生成可执行文件名 gcc -c:只编译,不链接,生成.o文件 make工具和Makefile文件 make工具:GNU make,是一个文件,用于将源代…

【CANoe示例分析】EthernetCanGW_Test_CN

1、工程路径 此示例工程来自于Vector官网:EthernetCanGW_Test_CN 感兴趣的可以自行下载! 2、示例目的 如何在CANoe中创建一个网关,实现转发以太网报文到多个CAN网络中。该使用案例是对CAN网络进行压力测试 3、示例内容 本示例通过执行Test Module里的测试用例Bus_load…

《电路/电路原理》—戴维宁(南)定理实战演练

前言战前准备什么是戴维南定理?戴维南定理(Thevenins theorem)标准解释:含独立电源的线性电阻单口网络N,就端口特性而言,可以等效为一个电压源和电阻串联的单口网络。电压源的电压等于单口网络在负载开路时…

CSS预处理器、移动端适配

1、预处理器概念 1.1、CSS编写的痛点 CSS作为一种样式语言, 本身用来给HTML元素添加样式是没有问题的。 但是目前前端项目已经越来越复杂, 不再是简简单单的几行CSS就可以搞定的, 我们需要几千行甚至上万行的CSS来完成页面的美化工作。 随着代码量的增加, 必然会造成很多的…

LeetCode-26. 删除有序数组中的重复项

目录题目分析双指针理解代码实现题目来源 26. 删除有序数组中的重复项 题目分析 解法: 双指针 首先注意数组是有序的,那么重复的元素一定会相邻。 要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。 考虑用 2 个指针,…

拉伯证券|7900亿芯片巨头狂跌,发生了什么?

全球芯片巨子忽然爆雷。 英特尔刚刚交出了一份“十分糟糕”的财报。美东时间1月26日美股盘后,英特尔公布的2022第四季度及全年财报显现,第四季度的营收为140亿美元,同比大幅下降32%,不及商场预期;第四季度净亏损7亿美元…

【项目精选】基于SpringBoot和Vue开发的功能强大的图书馆系统(附源码)

功能介绍 图书馆系统功能包括: 1、读者端: 1.智能推荐图书 2.读者在线预约座位 3.读者借阅归还图书 4.图书详情 5.图书评论、评星 6.用户登录、注册、修改个人信息 7.用户自定义图书标签 8.用户报名活动参加活动 9.书架展示和添加删除 10.用户邮件登录…

Win11的两个实用技巧系列之u盘怎么设置密码?

Win11系统u盘怎么设置密码?Win11设置u盘密码的方法win11U盘怎么设置密码?今天小编就为大家带来了Win11设置u盘密码的方法,需要的朋友一起看看吧现在还是有很多用户都在使用U盘来存储一些重要的文件和数据,而为了更好的保护里面的安全&#x…

mongodb的索引操作

Mongodb的索引操作 学习目标 掌握 mongodb索引的创建,删除操作掌握 mongodb查看索引的方法掌握 mongodb创建唯一索引的方法 1. 为什么mongdb需要创建索引 加快查询速度进行数据的去重 2. mongodb创建简单的索引方法 语法:db.集合名.ensureIndex({属…

【手写 Promise 源码】第八篇 - 完善 Promise 并通过 promise-aplus-tests 测试

一,前言 上一篇,实现 Promise 对返回值 x 各种情况的分析和处理,主要涉及以下几个点: 回顾了相关的 Promise A 规范内容;根据 Promise A 规范描述和要求,实现了核心解析方法:resolvePromise&a…

BUUCTF-Reverse Writeup【持续更新】

本文示例程序可见 BUUCTF 官网或者 github easyre | 入门级 方法一:WinHex 打开 easyre.exe,浏览一下字符串,发现有flag方法二:IDA Pro 打开 easyre.exe,能直接看到flag,或者 F5 反汇编看到逻辑是输入两个…

怎么把多个JPG合并成一个PDF?还不快来学

我们通常在处理工作文件时会有很多JPG图片需要传输,不过JPG图片数量一般都非常多,我们需要一张一张的进行传输,不仅会浪费很多时间,还很不方便查看,所以我们就可以及将JPG图片合并到一个PDF文件中,这样就可…

直流电机控制器设计

导读:本文主要介绍了DC-motor电流环和速度环的PI控制器参数的设计,并且简单介绍了设计控制器所需要的背景知识,相关仿真文件的下载地址在文章末尾可供大家下载。 DC-motor 的数学模型 直流电机电枢绕组的电压方程为:

阿里紧急辟谣,全球总部始终在杭州,造谣者请放过民营经济吧

树欲静,而风不止。春节期间又一则关于阿里的谣言,再次广泛传播。谣言称,“阿里在新加坡筹建全球总部”。这则谣言前后,网络上还有许多关于阿里早期创始人移民的各种传言。2023年1月27日下午,阿里集团相关负责人进行了辟…

SparkSQL中4个排序的区别

常用的四个排序BY ORDER BYSORT BYDISTRIBUTE BYCLUSTER BY 此文只是结合官方文档和案例做一下说明下功能 数据集描述 数据如上所示,并手动将分区数设定在2个,默认以 id 字段作为分区依据 原始数据分布 情况如下 相同id的数据都分到了同一个分区内 ORDER BY子句 官网说明: …

JavaScript 执行上下文

什么是执行上下文 JavaScript是一种客户端脚本语言,通常在Web浏览器中执行。当您在浏览器中加载网页时,浏览器会解析HTML文档并创建文档对象模型 (DOM)。在这个过程中,浏览器会寻找包含JavaScript代码的script标签并执行这些代码。 当浏览器…