国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:15:25
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了js使用Array.prototype.sort()對數組對象排序的方法,實例分析了Array.prototype.sort()的原理與相關的使用技巧,需要的朋友可以參考下
 

本文實例講述了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) {
    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程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 微山县| 富裕县| 深圳市| 富阳市| 万州区| 应城市| 辽源市| 大丰市| 咸阳市| 项城市| 鄯善县| 锡林浩特市| 九台市| 义乌市| 兰西县| 福贡县| 太白县| 中牟县| 图木舒克市| 磐安县| 伊通| 英德市| 汝州市| 同心县| 台州市| 林周县| 阿克| 涡阳县| 拉孜县| 嘉义市| 宁乡县| 宁津县| 宜宾市| 康乐县| 尼玛县| 苏尼特左旗| 井冈山市| 观塘区| 阿巴嘎旗| 高要市| 和顺县|