亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

sort排序問題

zero / 2600人閱讀

摘要:是一個(gè)返回函數(shù),表示排序的依據(jù)它有倆個(gè)參數(shù),分別為需要比較的倆個(gè)數(shù)機(jī)器的排序是通過倆倆比較來進(jìn)行排序的,基本用法與的比較結(jié)果會根據(jù)返回值正數(shù)負(fù)數(shù)來進(jìn)行排序。如果反過來返回值為,那么和的順序就變了。

w3school上對sort()用法的定義為:arrayObject.sort(sortby);
顧名思義 :排序?qū)ο?排序(排序方法)
arrayObject直接 跳過了。
sort詳解也暫時(shí)先跳過,我略看了下源碼,對于arrayObject的排序并不是多帶帶使用的一種,個(gè)數(shù)少的時(shí)候用的插入排序,個(gè)數(shù)多的時(shí)候用的快速排序。
直接說 sortby的用法。

sortby 是一個(gè) 返回函數(shù) ,表示排序的依據(jù),
它有倆個(gè)參數(shù),分別為需要比較的倆個(gè)數(shù)(機(jī)器的排序是通過倆倆比較來進(jìn)行排序的),
基本用法 :function(a,b){return a與b的比較結(jié)果}
sortby 會根據(jù)返回值 正數(shù)/0/負(fù)數(shù) 來進(jìn)行排序。正數(shù)會順序顛倒,負(fù)數(shù)和0順序不動(dòng)。

簡單的數(shù)字排序:
先講下淺層次的原理

比如說 [1,2].sort((a,b)=>a-b)
這個(gè)比較只有一次 1和2 比較,代入函數(shù),sortby返回值 為 -1 ,那么 1和2 順序不變。
如果反過來[1,2].sort((a,b)=>b-a)
sortby返回值為1 ,那么1和2 的順序就變了。
總結(jié)下也用法:
從小到大排序 array.sort((a,b)=>a-b);
從大到小排序:array.sort((a,b)=>b-a);

復(fù)雜點(diǎn)的Json排序。
這個(gè)有點(diǎn)類似于dataTable中的排序。
我平時(shí)創(chuàng)建一個(gè)數(shù)據(jù)表的時(shí)候,也都是通過json數(shù)組 遍歷創(chuàng)建的。
比如說: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表示本地默認(rèn)排序方式。
a["name"].localeCompare(b["name"])
表示按照本地排序的方式,以a.name與b.name的排序方式來排序data;

如果想反過來排序的話怎么辦的話:
上面說過,sortby的排序只根據(jù)正數(shù)/0/負(fù)數(shù),那么字母之間肯定也是有這樣的大小規(guī)律,倒序排序的話,只要把返回值變成其相反數(shù)即可。
b["name"].localeCompare(a["name"]);
或者
-(a["name"].localeCompare(b["name"]));

通過age排序
age排序和上面的數(shù)字排序是一樣的使用方法,從a-b變成了a[age]-b[age];

再復(fù)雜點(diǎn)的中文排序:

其實(shí)中文排序簡單粗暴地轉(zhuǎn)出拼音排序就可以了...
為什么說復(fù)雜呢,是因?yàn)橐獙?dǎo)入一個(gè)巨大的js,而且還需要轉(zhuǎn)行成拼音。
比如說:

let pinyin = {a:"u554au963fu9515",
ai:"u57c3u6328u54ceu5509u54c0u7691u764cu853cu77eeu827eu788du7231u9698u8bf6u6371u55f3u55ccu5ad2u7477u66a7u7839u953fu972d",
...}

獲取拼音的方法:

 function(word){
    for(let key in pinyin){
          if(pinyin[key].includes(word)){
            return key;
        }
    }}

然后就可以按照字母的排序方式來進(jìn)行排序了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/92478.html

相關(guān)文章

  • sort實(shí)現(xiàn)orderby

    摘要:工作到了這個(gè)年數(shù)感覺那些基本函數(shù)語法已經(jīng)跟人合一了根本不會為操作一些數(shù)據(jù)結(jié)構(gòu)而思考半天了在做小程序的時(shí)候遇到了個(gè)的場景結(jié)果發(fā)現(xiàn)沒有以為的那么簡單也許是之前不求甚解的原因那么現(xiàn)在來解決的問題問題的產(chǎn)生與探討方向在小程序中有個(gè)將的某一條置頂?shù)男? 工作到了這個(gè)年數(shù), 感覺那些基本函數(shù)語法已經(jīng)跟人合一了, 根本不會為操作一些數(shù)據(jù)結(jié)構(gòu)而思考半天了. 在做小程序的時(shí)候遇到了個(gè)orderby的場景,...

    jiekechoo 評論0 收藏0
  • 深入淺出 JavaScript 的 Array.prototype.sort 排序算法

    摘要:快速排序是不穩(wěn)定的排序算法。瀏覽器的實(shí)現(xiàn)不同有什么影響排序算法不穩(wěn)定有什么影響舉個(gè)例子某市的機(jī)動(dòng)車牌照拍賣系統(tǒng),最終中標(biāo)的規(guī)則為按價(jià)格進(jìn)行倒排序相同價(jià)格則按照競標(biāo)順位即價(jià)格提交時(shí)間進(jìn)行正排序。 本文要解決的問題 1、找出 Array.prototype.sort 使用的什么排序算法 2、用一種直觀的方式展示 Array.prototype.sort 的時(shí)間復(fù)雜度,看看它有多快? 3、...

    itvincent 評論0 收藏0
  • php 二維數(shù)組排序

    摘要:前提給定一個(gè)二維數(shù)組,請根據(jù)指定的數(shù)組寫出最優(yōu)的排序。排序條件,指定數(shù)組如下估計(jì)大家都沒有什么問題,排序嘛,簡單的不要不要的方式一這應(yīng)該是最簡單的方式了,直接使用現(xiàn)成的函數(shù),快捷的不要不要的。 前提 給定一個(gè)二維數(shù)組,請根據(jù)指定的數(shù)組key,寫出最優(yōu)的排序。排序條件age asc,sex desc,指定數(shù)組如下: $arr = [ [id=>1, age=>1,...

    ashe 評論0 收藏0
  • CodeSalt | Python解決按學(xué)生年齡排序的實(shí)際問題

    摘要:解決按學(xué)生年齡排序的實(shí)際問題問題定義一個(gè)包含姓名性別年齡,需要按年齡給學(xué)生排序。輸出按照年齡進(jìn)行排序好的。思路使用冒泡排序,比較相鄰的學(xué)生,如果第一個(gè)學(xué)生的值比第二個(gè)學(xué)生的值大,那么就整體交換這兩個(gè)元素。 Python解決按學(xué)生年齡排序的實(shí)際問題 問題:定義一個(gè)Class:包含姓名name、性別gender、年齡age,需要按年齡給學(xué)生排序。輸入:包含學(xué)生對象的List。輸出:按照年齡...

    yangrd 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<