js使用Array.prototype.sort()對數(shù)組對象排序的方法

這篇文章主要介紹了js使用Array.prototype.sort()對數(shù)組對象排序的方法,實例分析了Array.prototype.sort()的原理與相關的使用技巧,需要的朋友可以參考下

本文實例講述了js使用Array.prototype.sort()對數(shù)組對象排序的方法。分享給大家供大家參考。具體分析如下:
在講對數(shù)組對象進行排序時,我們先來簡單的了解一下Array.prototype.sort()。sort方法接受一個參數(shù)——Function,function會提供兩個參數(shù),分別是兩個進行比較的元素,如果元素是String類型則通過Unicode code進行比較,如果是Number類型則比較值的大小。如果比較的函數(shù)中返回1則兩個元素交換位置,0和-1不交換位置。先看一個例子:

var arr = [3, 5, 2, 1];
// 從小到大排序
arr.sort(function (a, b) {    
  return a > b ? 1 : -1;
});
// 得到的結果:[1, 2, 3, 5]

那么回到我們的主題,如果是對一個數(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的一個元素,即一個對象,所以直接比較兩個對象的屬性即可。
上面的例子中,最小的元素中有重復,如果需求是:先按b屬性從小到大排序,如果最小中有重復則再按a屬性排序,那應該怎么寫呢?
在排序的時候,先按b屬性排序,如果x.b的大于y.b則將x移到y(tǒng)的右邊,如果x.b等于y.b則再通過x.a和y.a進行比較,所以代碼如下:

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;    
  }
});

希望本文所述對大家的javascript程序設計有所幫助。

本文轉載自:

《js使用Array.prototype.sort()對數(shù)組對象排序》,原文作者:shichen2014

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容