這篇文章主要介紹了js使用Array.prototype.sort()對(duì)數(shù)組對(duì)象排序的方法,實(shí)例分析了Array.prototype.sort()的原理與相關(guān)的使用技巧,需要的朋友可以參考下
本文實(shí)例講述了js使用Array.prototype.sort()對(duì)數(shù)組對(duì)象排序的方法。分享給大家供大家參考。具體分析如下:
在講對(duì)數(shù)組對(duì)象進(jìn)行排序時(shí),我們先來(lái)簡(jiǎn)單的了解一下Array.prototype.sort()。sort方法接受一個(gè)參數(shù)——Function,function會(huì)提供兩個(gè)參數(shù),分別是兩個(gè)進(jìn)行比較的元素,如果元素是String類(lèi)型則通過(guò)Unicode code進(jìn)行比較,如果是Number類(lèi)型則比較值的大小。如果比較的函數(shù)中返回1則兩個(gè)元素交換位置,0和-1不交換位置。先看一個(gè)例子:
var arr = [3, 5, 2, 1];
// 從小到大排序
arr.sort(function (a, b) {
return a > b ? 1 : -1;
});
// 得到的結(jié)果:[1, 2, 3, 5]
那么回到我們的主題,如果是對(duì)一個(gè)數(shù)組對(duì)象進(jìn)行排序,該怎么寫(xiě)呢?其實(shí)原理和上面一樣,如:
var arr = [
{ a : 2, b : 3.2},
{ a : 3, b : 1.2},
{ a : 4, b : 2.2},
{ a : 6, b : 1.2},
{ a : 5, b : 3.2}]
// 從小到大按屬性b排序
arr.sort(function(x, y){
return x.b > y.b ? 1:-1;
});
x和y就是arr的一個(gè)元素,即一個(gè)對(duì)象,所以直接比較兩個(gè)對(duì)象的屬性即可。
上面的例子中,最小的元素中有重復(fù),如果需求是:先按b屬性從小到大排序,如果最小中有重復(fù)則再按a屬性排序,那應(yīng)該怎么寫(xiě)呢?
在排序的時(shí)候,先按b屬性排序,如果x.b的大于y.b則將x移到y(tǒng)的右邊,如果x.b等于y.b則再通過(guò)x.a和y.a進(jìn)行比較,所以代碼如下:
arr.sort(function (x, y) {
if (x.b > y.b) {
return 1;
} else if (x.b === y.b) {
return x.a > y.a ? 1 : -1;
} else if (x.b < y.b) {
return -1;
}
});
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
本文轉(zhuǎn)載自:
《js使用Array.prototype.sort()對(duì)數(shù)組對(duì)象排序》,原文作者:shichen2014