摘要:是一個返回函數,表示排序的依據它有倆個參數,分別為需要比較的倆個數機器的排序是通過倆倆比較來進行排序的,基本用法與的比較結果會根據返回值正數負數來進行排序。如果反過來返回值為,那么和的順序就變了。
w3school上對sort()用法的定義為:arrayObject.sort(sortby);
顧名思義 :排序對象.排序(排序方法)
arrayObject直接 跳過了。
sort詳解也暫時先跳過,我略看了下源碼,對于arrayObject的排序并不是多帶帶使用的一種,個數少的時候用的插入排序,個數多的時候用的快速排序。
直接說 sortby的用法。
sortby 是一個 返回函數 ,表示排序的依據,
它有倆個參數,分別為需要比較的倆個數(機器的排序是通過倆倆比較來進行排序的),
基本用法 :function(a,b){return a與b的比較結果}
sortby 會根據返回值 正數/0/負數 來進行排序。正數會順序顛倒,負數和0順序不動。
簡單的數字排序:
先講下淺層次的原理:
比如說 [1,2].sort((a,b)=>a-b)
這個比較只有一次 1和2 比較,代入函數,sortby返回值 為 -1 ,那么 1和2 順序不變。
如果反過來[1,2].sort((a,b)=>b-a)
sortby返回值為1 ,那么1和2 的順序就變了。
總結下也用法:
從小到大排序 array.sort((a,b)=>a-b);
從大到小排序:array.sort((a,b)=>b-a);
復雜點的Json排序。
這個有點類似于dataTable中的排序。
我平時創建一個數據表的時候,也都是通過json數組 遍歷創建的。
比如說:let data = [{name: "a",age:14},{name: "d",age:10},{name: "c",age:32},{name: "b",age:5}];
首先通過name來排序。
data.sort((a,b)=>a["name"].localeCompare(b["name"]));
localeCompare表示本地默認排序方式。
a["name"].localeCompare(b["name"])
表示按照本地排序的方式,以a.name與b.name的排序方式來排序data;
如果想反過來排序的話怎么辦的話:
上面說過,sortby的排序只根據正數/0/負數,那么字母之間肯定也是有這樣的大小規律,倒序排序的話,只要把返回值變成其相反數即可。
b["name"].localeCompare(a["name"]);
或者
-(a["name"].localeCompare(b["name"]));
通過age排序
age排序和上面的數字排序是一樣的使用方法,從a-b變成了a[age]-b[age];
再復雜點的中文排序:
其實中文排序簡單粗暴地轉出拼音排序就可以了...
為什么說復雜呢,是因為要導入一個巨大的js,而且還需要轉行成拼音。
比如說:
let pinyin = {a:"u554au963fu9515", ai:"u57c3u6328u54ceu5509u54c0u7691u764cu853cu77eeu827eu788du7231u9698u8bf6u6371u55f3u55ccu5ad2u7477u66a7u7839u953fu972d", ...}
獲取拼音的方法:
function(word){ for(let key in pinyin){ if(pinyin[key].includes(word)){ return key; } }}
然后就可以按照字母的排序方式來進行排序了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92478.html
摘要:工作到了這個年數感覺那些基本函數語法已經跟人合一了根本不會為操作一些數據結構而思考半天了在做小程序的時候遇到了個的場景結果發現沒有以為的那么簡單也許是之前不求甚解的原因那么現在來解決的問題問題的產生與探討方向在小程序中有個將的某一條置頂的需 工作到了這個年數, 感覺那些基本函數語法已經跟人合一了, 根本不會為操作一些數據結構而思考半天了. 在做小程序的時候遇到了個orderby的場景,...
摘要:快速排序是不穩定的排序算法。瀏覽器的實現不同有什么影響排序算法不穩定有什么影響舉個例子某市的機動車牌照拍賣系統,最終中標的規則為按價格進行倒排序相同價格則按照競標順位即價格提交時間進行正排序。 本文要解決的問題 1、找出 Array.prototype.sort 使用的什么排序算法 2、用一種直觀的方式展示 Array.prototype.sort 的時間復雜度,看看它有多快? 3、...
摘要:前提給定一個二維數組,請根據指定的數組寫出最優的排序。排序條件,指定數組如下估計大家都沒有什么問題,排序嘛,簡單的不要不要的方式一這應該是最簡單的方式了,直接使用現成的函數,快捷的不要不要的。 前提 給定一個二維數組,請根據指定的數組key,寫出最優的排序。排序條件age asc,sex desc,指定數組如下: $arr = [ [id=>1, age=>1,...
摘要:解決按學生年齡排序的實際問題問題定義一個包含姓名性別年齡,需要按年齡給學生排序。輸出按照年齡進行排序好的。思路使用冒泡排序,比較相鄰的學生,如果第一個學生的值比第二個學生的值大,那么就整體交換這兩個元素。 Python解決按學生年齡排序的實際問題 問題:定義一個Class:包含姓名name、性別gender、年齡age,需要按年齡給學生排序。輸入:包含學生對象的List。輸出:按照年齡...
閱讀 2184·2020-06-12 14:26
閱讀 2487·2019-08-29 16:41
閱讀 1890·2019-08-29 15:28
閱讀 2455·2019-08-26 13:43
閱讀 757·2019-08-26 13:37
閱讀 2777·2019-08-23 18:13
閱讀 2800·2019-08-23 15:31
閱讀 1018·2019-08-23 14:10