一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js使用Array.prototype.sort()對數組對象排序的方法

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

2021-07-28 15:55JS教程網 JavaScript

這篇文章主要介紹了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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产拍拍视频一二三四区 | 亚洲精品久久久久久婷婷 | 欧美高清乌克兰精品另类 | 亚洲AV永久无码精品老司机蜜桃 | 欧美最新在线 | 欧美大片一级片 | 久久99热在线观看7 久久99精品涩AV毛片观看 | 国产成人久久精品推最新 | 三级欧美在线 | 国产精品亚洲片夜色在线 | 日韩视频在线精品视频免费观看 | 亚洲男人网 | 国内精品视频九九九九 | 亚洲视频一区网站 | 亚洲欧美一区二区三区在饯 | 色在线看 | 国产在线观看99 | 金发美女与黑人做爰 | 清纯漂亮女友初尝性过程 | 91久久国产青草亚洲 | 国产成人综合亚洲亚洲欧美 | 操爽| 美女扒开胸罩露出奶了无遮挡免费 | 777奇米影视一区二区三区 | 国产色网 | 欧美综合另类 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 性姿势女人嗷嗷叫图片 | 爽好紧别夹宝贝叫大声点护士 | 国产一区二区视频在线 | 日本在线一区二区 | 和肥岳在厨房激情 | 欧美图片小说 | 香蕉免费一区二区三区 | 国产伦精品一区二区三区免 | 欧美二区视频 | 精品国产免费第一区二区三区日韩 | 成成人看片在线 | 国产综合亚洲欧美日韩一区二区 | 国产精品久久久久久 | 男人天堂新 |