Sort()函數(shù)的多種用法
sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序。包含于頭文件algorithm
語(yǔ)法
arrayObject.sort(sortby)
參數(shù) | 描述 |
---|---|
sortby | 可選。規(guī)定排序順序。必須是函數(shù)。 |
返回值
對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本。
一、默認(rèn)情況
在默認(rèn)情況下, sort() 方法按升序排列數(shù)組項(xiàng)。為了實(shí)現(xiàn)排序, sort() 方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的 toString() 轉(zhuǎn)型方法,然后比較得到的字符串,已確定如何排序。如下:
var values = ["orange","apple","banana"]; values.sort(); console.log(values);//結(jié)果["apple", "banana", "orange"]
但是,即使數(shù)組中的每一項(xiàng)都是數(shù)值,sort() 方法比較的也是字符串,如下:
var values = [,,,,]; values.sort(); console.log(values);//結(jié)果[, , , , ]
二、對(duì)數(shù)值進(jìn)行排序
sort() 方法可以接收一個(gè)比較函數(shù)作為參數(shù)。
比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二參數(shù)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)位于第二個(gè)之后則返回一個(gè)正數(shù)。
function compare(a, b){ return (a - b); }//按升序排列的比較函數(shù) var values = [,,,,]; values.sort(compare); console.log(values);//結(jié)果[, , , , ]
三、根據(jù)某個(gè)對(duì)象屬性對(duì)數(shù)組進(jìn)行排序
先定義一個(gè)函數(shù),它接收一個(gè)屬性名,然后根據(jù)這個(gè)屬性名來(lái)創(chuàng)建一個(gè)比較函數(shù)。下面是這個(gè)函數(shù)的定義:
function createComparisonFunction(propertyName){ return function(object, object){ var a = object[propertyName]; var b = object[propertyName]; if(a < b){ return -; }else if(a > b){ return ; }else{ return ; } } }//返回一個(gè)根據(jù)屬性名創(chuàng)建的按升序排列的比較函數(shù)
在內(nèi)部函數(shù)接收到propertyName參數(shù)后,它會(huì)使用方括號(hào)表示法來(lái)取得給定屬性的值。
上面這個(gè)函數(shù)可以在像在下面例子中這樣使用。
var data = [{name:"Lily", age: }, {name:"Judy", age: }]; data.sort(createComparisonFunction("name")); console.log(data[].name);//Judy data.sort(createComparisonFunction("age")); console.log(data[].name);//Lily
以上內(nèi)容是小編給大家介紹的Sort()函數(shù)的多種用法,希望對(duì)大家以上幫助!
相關(guān)文章
js導(dǎo)入導(dǎo)出excel(實(shí)例代碼)
這篇文章主要是對(duì)js導(dǎo)入導(dǎo)出excel的實(shí)例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11在你的網(wǎng)頁(yè)中嵌入外部網(wǎng)頁(yè)的方法
在你的網(wǎng)頁(yè)中嵌入外部網(wǎng)頁(yè)的方法...2007-04-04js實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08JS日期格式化之javascript Date format
這篇文章主要介紹了JS日期格式化之javascript Date format的相關(guān)資料,需要的朋友可以參考下2015-10-10Javascript中string轉(zhuǎn)date示例代碼
string轉(zhuǎn)date的方法有很多,在接下來(lái)為大家介紹下Javascript中是如何做到的,感性取的朋友不要錯(cuò)過(guò)2013-11-11javascript中的數(shù)據(jù)類型檢測(cè)方法詳解
這篇文章主要介紹了javascript中的數(shù)據(jù)類型檢測(cè)方法,結(jié)合實(shí)例形式分析了javascript數(shù)據(jù)類型并總結(jié)分析了常見(jiàn)的數(shù)據(jù)類型檢測(cè)操作技巧,需要的朋友可以參考下2019-08-08TypeScript中l(wèi)et和var的區(qū)別介紹
這篇文章主要介紹了TypeScript?let與var的區(qū)別,主要從作用域等這幾個(gè)方面做詳細(xì)介紹,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07JavaScript手寫數(shù)組的常用函數(shù)總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript手寫數(shù)組常用函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11原生JS版和jquery版實(shí)現(xiàn)checkbox的全選/全不選/點(diǎn)選/行內(nèi)點(diǎn)選(Mr.Think)
腳本之家小編之前整理不少checkbox全選全不選這方便的文章,但看了這篇以后發(fā)現(xiàn)實(shí)現(xiàn)方法更好2016-10-10