【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.pswp.cn/news/712521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712521.shtml
英文地址,請注明出處:http://en.pswp.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;越是在最…