Sort()函數(shù)的多種用法
sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序。包含于頭文件algorithm
語法
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è)屬性名來創(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)表示法來取得給定屬性的值。
上面這個(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自定義函數(shù)對(duì)web前端上傳的文件進(jìn)行類型大小判斷
這篇文章主要介紹了JS自定義函數(shù)對(duì)web前端上傳的文件進(jìn)行類型大小判斷的相關(guān)資料,需要的朋友可以參考下2016-10-10
javascript在firefox下設(shè)為首頁的代碼
javascript在firefox下設(shè)為首頁的代碼...2007-09-09
微信小程序Page中data數(shù)據(jù)操作和函數(shù)調(diào)用方法
這篇文章主要介紹了微信小程序Page中data數(shù)據(jù)操作和函數(shù)調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精
利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精簡(jiǎn)...2007-03-03

