sort() 方法用于對數(shù)組的元素進行排序。包含于頭文件algorithm
語法
arrayObject.sort(sortby)
返回值
對數(shù)組的引用。請注意,數(shù)組在原數(shù)組上進行排序,不生成副本。
一、默認情況
在默認情況下, sort() 方法按升序排列數(shù)組項。為了實現(xiàn)排序, sort() 方法會調(diào)用每個數(shù)組項的 toString() 轉(zhuǎn)型方法,然后比較得到的字符串,已確定如何排序。如下:
var values = ["orange","apple","banana"];
values.sort();
console.log(values);//結(jié)果["apple", "banana", "orange"]
但是,即使數(shù)組中的每一項都是數(shù)值,sort() 方法比較的也是字符串,如下:
var values = [,,,,];
values.sort();
console.log(values);//結(jié)果[, , , , ]
二、對數(shù)值進行排序
sort() 方法可以接收一個比較函數(shù)作為參數(shù)。
比較函數(shù)接收兩個參數(shù),如果第一個參數(shù)應該位于第二參數(shù)之前則返回一個負數(shù),如果兩個參數(shù)相等則返回0,如果第一個參數(shù)位于第二個之后則返回一個正數(shù)。
function compare(a, b){
return (a - b);
}//按升序排列的比較函數(shù)
var values = [,,,,];
values.sort(compare);
console.log(values);//結(jié)果[, , , , ]
三、根據(jù)某個對象屬性對數(shù)組進行排序
先定義一個函數(shù),它接收一個屬性名,然后根據(jù)這個屬性名來創(chuàng)建一個比較函數(shù)。下面是這個函數(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 ;
}
}
}//返回一個根據(jù)屬性名創(chuàng)建的按升序排列的比較函數(shù)
在內(nèi)部函數(shù)接收到propertyName參數(shù)后,它會使用方括號表示法來取得給定屬性的值。
上面這個函數(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ù)的多種用法,希望對大家以上幫助!