6 個(gè)用于排序數(shù)組的 JavaScript 代碼片段

英文 | https://javascript.plainenglish.io/6-javascript-code-snippets-for-sorting-arrays-56a7049f831
翻譯 | 楊小愛
有趣的是,我還沒有在 Internet 上找到 JavaScript 中排序行為的完整列表。經(jīng)過一些考慮,我最終決定創(chuàng)建這樣一個(gè)內(nèi)容,作為其他 Web 開發(fā)人員的學(xué)習(xí)參考。
演示用例:查找“arr”的結(jié)果
(1) 數(shù)值排序 | 上升 [???]
const arr = [40, 100, 1, 5, 25, 10];arr.sort(function(a, b){return a-b;});
之前:[40,100,1,5,25,10]
之后:[1,5,10,25,40,100]
說明:對(duì)于數(shù)字排序,必須創(chuàng)建 Comparator 實(shí)體或比較函數(shù)。在上面的代碼片段中,這相當(dāng)于
const compare = function(a, b){return a-b;};
排序結(jié)果是
arr.sort(compare);(2) 數(shù)值排序 | 降序[???]
const arr = [40, 100, 1, 5, 25, 10];arr.sort(function(a, b){return b-a; // swap the positions of a and b});
之前:[40,100,1,5,25,10]
之后:[100,40,25,10,5,1]
(3) 字母排序 | 上升? [???]
const arr = ["Blue", "Orange", "Aqua", "Marine"];arr.sort();
之前:[“藍(lán)色”、“橙色”、“水色”、“海洋”]
之后:[“水色”、“藍(lán)色”、“海洋”、“橙色”]
?字母排序行為在 JavaScript 中不太直觀。僅當(dāng)數(shù)組中的所有元素都被讀取為(類型)字符串時(shí),內(nèi)置的默認(rèn) sort() 函數(shù)才適用于 JavaScript 數(shù)組。
(4) 字母排序 | 降序? [???]
const arr = ["Blue", "Orange", "Aqua", "Marine"];arr.sort().reverse();
之前:[“藍(lán)色”、“橙色”、“水色”、“海洋”]
之后:[“橙色”、“海洋”、“藍(lán)色”、“水綠色”]
?與僅適用于字符串實(shí)體的 sort() 函數(shù)不同,JavaScript 中的函數(shù) reverse() 適用于整個(gè)數(shù)組并交換元素的位置而不管(類型)。第一個(gè)元素成為最后一個(gè)元素,反之亦然。
(5) 日期排序 | 上升 [▲]
const arr = ["2015-03-25", "2015-02-01", "2015-01-03", "2015-02-02"];arr.sort(function(a, b){return new Date(a)-new Date(b);});
之前:[“2015-03-25”、”2015-02-01”、”2015-01-03”、”2015-02-02”]
之后:[“2015–01–03”、”2015–02–01”、”2015–02–02”、”2015–03–25”]
說明:Date 的排序行為與數(shù)字排序非常相似。然而,JavaScript 數(shù)組中的 String 實(shí)體必須首先被解析為 Date 對(duì)象,因?yàn)樗鼈兛梢愿鶕?jù)相對(duì)日期出現(xiàn)進(jìn)行排序。
(6) 日期排序 | 降序 [▼]
類似于數(shù)字排序...
const arr = ["2015-03-25", "2015-02-01", "2015-01-03", "2015-02-02"];arr.sort(function(a, b){return new Date(b)-new Date(a); // swap the positions of a and b});
之前:[“2015-03-25”、”2015-02-01”、”2015-01-03”、”2015-02-02”]
之后:[“2015–03–25”、”2015–02–02”、”2015–02–01”、”2015–01–03”]
總結(jié)
這就是我對(duì) JavaScript 數(shù)組進(jìn)行排序的 6 個(gè)代碼片段列表的總結(jié)!非常感謝您堅(jiān)持閱讀到本文的結(jié)尾。
希望您發(fā)現(xiàn)這很有用,并考慮將其加入收藏書簽以供需要時(shí)參考。
最后,祝編程愉快!
學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()

