【JS】sort方法的基本使用与双重、多重排序:对象数组按照多个对象属性进行排序

【JS】对象数组按照多个对象属性进行排序(sort方法)

  • 一、sort():用于对数组的元素进行排序,并返回数组,arr.sort()默认为升序排列
  • 二、sort()用法
  • 三、双重、多重排序:对象数组按照多个对象属性进行排序(sort方法)
  • 四、多重排序函数封装(还可以更简略,这里我只是举个例子)

一、sort():用于对数组的元素进行排序,并返回数组,arr.sort()默认为升序排列

二、sort()用法

  • arrayObject.sort(sort),参数sort可选,如果调用该方法时不传参数sort,将按照字符编码的顺序进行排序(升序)
let arr = [5,3,1,6,4,2,3];
arr.sort(); // [1, 2, 3, 3, 4, 5, 6]
  • 如需按照其他标准进行排序,就需要提供比较函数,比较函数应该具有两个参数 a 和 b,其返回值如下:
    • a < b,数组中的 a 应该出现在 b 之前,则返回-1。
    • a ===b,则返回 0。
    • a > b,则返回1。
let arr = [5,3,1,6,4,2,3];
let result=arr.sort(function(a,b){return a-b;
});
console.log(result)
// [1, 2, 3, 3, 4, 5, 6]//以上方法是对number数组排序的,如果是string的话则不能用 a-b ,应当如下:
let arr = ["A","cds","esadf","As"];
let result=arr.sort(function(a,b){if(a > b){return 1;}
});
console.log(result)
// ["A", "As", "cds", "esadf"]

三、双重、多重排序:对象数组按照多个对象属性进行排序(sort方法)

  • 先按学生的总分排序,如果总分相等,我们再按照语文成绩排序,依次类推。
 let students = [{ name: "1", totalScore: 196, Chinese: 100, math: 96 },{ name: "2", totalScore: 198, Chinese: 99, math: 99 },{ name: "3", totalScore: 185, Chinese: 88, math: 97 },{ name: "4", totalScore: 196, Chinese: 96, math: 100 },{ name: "4", totalScore: 196, Chinese: 98, math: 98 },{ name: "5", totalScore: 180, Chinese: 90, math: 90 },];let result = students.sort((a, b) => {if (a.totalScore === b.totalScore) {if (a.Chinese < b.Chinese) {return 1;} else if (a.Chinese > b.Chinese) {return -1;} else {return 0;}} else {return b.totalScore - a.totalScore; //降序}});console.log(result);//[{ name: "2", totalScore: 198, Chinese: 99, math: 99 },{ name: "1", totalScore: 196, Chinese: 100, math: 96 },{ name: "4", totalScore: 196, Chinese: 98, math: 98 },{ name: "4", totalScore: 196, Chinese: 96, math: 100 },{ name: "3", totalScore: 185, Chinese: 88, math: 97 },{ name: "5", totalScore: 180, Chinese: 90, math: 90 },];

四、多重排序函数封装(还可以更简略,这里我只是举个例子)

   filterData(a, b) {//s,s1,s3等是你想要排序的属性if (a["s"].length === b["s"].length) {if (a["s1"] == b["s1"]) {if (a["s3"].length < b["s3"].length) {return 1;} else if (a["s3"].length > b["s3"].length) {return -1;} else {return 0;}} else {return b["s1"] - a["s1"];}} else {return (b["s"].length - a["s"].length);}},
// console.log(数组.sort(filterData));

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

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

相关文章

设备树学习(DOING)

我的理解本质上还是复用。尤其是嵌入式领域&#xff0c;设备多种多样&#xff0c;但是很多设备接口都是标准的&#xff0c;或者大同小异。以前驱动开发可能每个设备商都去抄别家的搞进内核&#xff0c;这样造成了大量的垃圾代码。后面linux内核就把这些做成公共库抽象出来&…

SpringBoot整合Kafka

SpringBoot整合Kafka的步骤如下&#xff1a; 添加依赖&#xff1a;在SpringBoot项目的pom.xml文件中添加Kafka的依赖。 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>版本号…

常见的递归Java实现

形如 public static void test(int n) {if (n > 2) {test(n - 1);}System.out.println("n" n); }重要规则 执行一个方法时&#xff0c;就创建一个新的受保护的独立空间&#xff08;栈空间&#xff09;方法的局部变量是独立的&#xff0c;不会相互影响如果方法中…

【教程】移动互联网时代的APP上架流程和要点

目录 摘要 引言 正文 一、应用商店注册 二、准备APP材料 三、打包上传App 摘要 本文将介绍移动应用程序上架的基本流程和要点&#xff0c;包括应用商店注册、APP材料准备、打包上传App、APP审核以及发布APP的详细步骤。此外&#xff0c;还会提到利用appuploder工具简化i…

Gradio学习(五)—————学习一下布局Column的使用

今天学一下布局 非常简单row就是行column就是列 如下就是两行两列 scale就是缩放比例&#xff0c;如下按钮类scale4&#xff0c;而文本框类scale1&#xff0c;按钮类显示宽度就是文本框类宽度的四倍 import gradio as gr with gr.Blocks() as demo:with gr.Row():with gr.Colu…

Spring Cloud 实战系列之 Zuul 微服务网关搭建及配置

一、创建SpringBoot项目 用mavan搭建也可以。&#xff08;重要的是后面pom里应该引入那些依赖&#xff0c;application.yml怎么配置&#xff09; 由于开始构建项目时选择了Eureka Server&#xff0c;所以pom.xml中不需要手动添加依赖了 首先在启动类SpringcloudApplicatio…

SpringBoot项目连接Redis报错:Connection refused: no further information

今天在使用SpringBoot连接Redis时发生了报错 明明Jedis能够连接成功为什么StringRedisTemplate就不行? 然后在网上找了一下说是关闭防火墙或者修改配置文件但是都不管用 最后发现是Redis在SpringBoot3之后yml的配置方式发生了改变 相较于之前多了一个前缀, 由于我刚开始没有…

项目风险管理的前提是对风险的认知

大家好&#xff0c;我是不会魔法的兔子&#xff0c; 一枚北京执业律师&#xff0c;创建[项目管理者的法小院儿]&#xff0c;持续从法律的角度分享项目管理中的风险问题及预防&#xff0c;让项目管理者能够提早发现与解决项目执行过程中的风险&#xff0c;同时欢迎大家一起交流…

论文解读--Mutual Interference Mitigation in PMCW Automotive Radar

PMCW汽车雷达的相互干扰抑制 摘要 针对相位调制连续波(PMCW)毫米波(mmWave)汽车雷达系统中存在的相互干扰问题进行了研究。对先进驾驶辅助系统(ADAS)的需求日益增长&#xff0c;导致配备在同一频段工作的毫米波雷达系统的车辆激增&#xff0c;导致相互干扰&#xff0c;可能会降…

WPF 滑动条样式

效果图&#xff1a; 浅色&#xff1a; 深色&#xff1a; 滑动条部分代码&#xff1a; <Style x:Key"RepeatButtonTransparent" TargetType"{x:Type RepeatButton}"><Setter Property"OverridesDefaultStyle" Value"true"/&g…

【Oracle】Oracle清理日志空间

&#xff08;一&#xff09;通过adrci清理日志空间 1.通过find命令查询大数据文件 find / -type f -size 100M 2.登录oracle数据库服务器用户 su - oracle 3.执行故障诊断命令 adrci 4.查询ADR目录 show home 5.切换到对应目录 set homepath diag/rdbms/orcl 6.执行日志清理命令…

枚举类、泛型、API

枚举类 枚举类可以实现单例设计模式。 枚举的常见应用场景&#xff1a;用来表示一组信息&#xff0c;然后作为参数进行传输。 泛型 API

Qt 中Qwidget相关属性

文章目录 1. QWidget 核心属性1.1 enabled1.2 geometry1.2.1 window frame 的影响 1.3 windowTitle1.4 windowIcon1.4.1 qrc的使用 1.5 windowOpacity1.6 cursor1.7 focusPolicy1.8 styleSheet 1. QWidget 核心属性 在 Qt 中, 使⽤ QWidget 类表⽰ “控件”. 像按钮, 视图, 输…

今年Android面试必问的这些技术面,2024Android常见面试题

都说程序员是在吃青春饭&#xff0c;这一点的确有一点对的成分&#xff0c;以前我不这么认为&#xff0c;但随着年龄的增长&#xff0c;事实告诉我的确是这样的&#xff0c;过了30以后&#xff0c;就会发现身体各方面指标下降&#xff0c;体力和身心上都多少有点跟不上了&#…

Node.js中的缓存策略和缓存技巧

在Node.js中&#xff0c;缓存策略和缓存技巧是提升应用性能和用户体验的关键因素。通过有效地利用缓存&#xff0c;我们可以显著减少系统资源的消耗&#xff0c;加快数据访问速度&#xff0c;从而提升整体的网站性能。本文将针对Node.js中的缓存策略和缓存技巧展开深入探讨&…

Newtonsoft.Json

目录 引言 1、简单使用 1.1、官方案例 1.2、JsonConvert 2、特性 2.1、默认模式[JsonObject(MemberSerialization.OptIn/OptOut)] 2.2、序列化为集合JsonArrayAttribute/JsonDictionaryAttribute 2.3、序列化该元素JsonProperty 2.4、忽略元素JsonIgnoreAttribute 2.5、…

iOS CVPixelBufferCreate 创建 CVPixelBufferRef 时屏幕拉伸或像素偏移(花屏)

先说结论&#xff1a; CVPixelBufferCreate 创建的 CVPixelBufferRef 可能由以下的原因导致的&#xff1a; 1.pixelFormatType 格式错误&#xff0c;换一下格式尝试 2.width和height 非 32 的整数倍 3.视频帧的宽高比非标准比例&#xff08;4:3,16:9,1:1&#xff09; 另外说明&…

今天面试招了个18K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不…

docker save 命令 docker load 命令 快速复制容器

docker save 命令 docker load 命令 1、docker save 命令2、docker load 命令 1、docker save 命令 docker save 命令用于在系统上把正在使用的某个容器镜像 导出成容器镜像文件保存下载&#xff0c;以便在其他系统上导入这个容器镜像文件 以便快速在其他服务器上启动相同的容…

读书笔记:《思考 . 快与慢》- 1 系统1 系统2

《思考 . 快与慢》 [美] 丹尼尔 . 卡尼曼 著 胡晓姣 李爱民 何梦莹 译 这本书会改变你的思考方式 利用闲谈发现和分析别人犯的错误比分析自己的错误更容易&#xff0c;也更有意思 在人生最辉煌的时候&#xff0c;我们很难对自己的信念和需求产生怀疑&#xff0c;越是在最…