首頁  >  文章  >  web前端  >  js使用Array.prototype.sort()對陣列物件排序的方法_javascript技巧

js使用Array.prototype.sort()對陣列物件排序的方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:17:321337瀏覽

本文實例講述了js使用Array.prototype.sort()對陣列物件排序的方法。分享給大家供大家參考。具體分析如下:

在講對陣列物件進行排序時,我們先來簡單的了解一下Array.prototype.sort()。 sort方法接受一個參數-Function,function會提供兩個參數,分別是兩個進行比較的元素,如果元素是String類型則透過Unicode code進行比較,如果是Number型別則比較值的大小。如果比較的函數中傳回1則兩個元素交換位置,0和-1不交換位置。先看一個例子:

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

那麼回到我們的主題,如果是對一個陣列物件進行排序,該怎麼寫呢?其實原理跟上面一樣,如:

複製程式碼 程式碼如下:
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的右邊,如果x.b等於y.b則再透過x.a和y.a比較,所以代碼如下:

複製程式碼 程式碼如下:
arr.sort(function (x, y) {

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

希望本文所述對大家的javascript程式設計有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn