国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

5分鐘學(xué)會javascript多條件排序的函數(shù)式實現(xiàn)

Donald / 570人閱讀

摘要:一些篩選排序的場景,會遇到多個條件組合對數(shù)據(jù)進(jìn)行排序的需求在中,應(yīng)如何實現(xiàn)并且能夠滿足靈活配置呢首先中數(shù)組的函數(shù)可對數(shù)據(jù)進(jìn)行排序處理函數(shù)說明所需要的參數(shù)為一個返回值為類型的函數(shù),通過調(diào)用此函數(shù)的結(jié)果與進(jìn)行比較,得到小于等于大于的結(jié)果,進(jìn)行排

一些篩選、排序的場景,會遇到多個條件組合對數(shù)據(jù)進(jìn)行排序的需求

在javascript中,應(yīng)如何實現(xiàn)?并且能夠滿足靈活配置呢?

首先javascript中數(shù)組的sort函數(shù)可對數(shù)據(jù)進(jìn)行排序處理 sort函數(shù)說明

   sort所需要的參數(shù)為一個返回值為number類型的函數(shù),通過調(diào)用此函數(shù)的結(jié)果與0進(jìn)行比較,得到小于0、等于0、大于0的結(jié)果,進(jìn)行排序

假設(shè)需要進(jìn)行多個條件的排序,那么可產(chǎn)生一個條件數(shù)組 [條件1, 條件2, 條件3]

   通過對此數(shù)組中元素的調(diào)整,即可靈活配置多個條件,并控制其判斷的先后順序
   sort的參數(shù)為一個函數(shù),需要對數(shù)組進(jìn)行轉(zhuǎn)化

單個條件判斷函數(shù),對一些特殊的判斷邏輯,小于0、等于0、大于0的判斷方式并不通用

   如性別的判斷,男or女
   條件判斷函數(shù)的參數(shù)實際為相鄰的兩個待排序的元素
   通過對 (a, b) => boolean函數(shù)的包裝,即可實現(xiàn)小于0、等于0、大于0的結(jié)果
   只需要在調(diào)用時,調(diào)整a、b參數(shù)的順序即可

function getSort(fn) {
    return function(a, b) {
        var ret = 0;

        if (fn.call(this, a, b)) {
            ret = -1;
        } else if (fn.call(this, b, a)) {
            ret = 1;
        }

        return ret;
    }
}

function getMutipSort(arr) {
    return function(a, b) {
        var tmp, i = 0;

        do {
            tmp = arr[i++](a, b);
        } while (tmp == 0 && i < arr.length);

        return tmp;
    }
}

var ageSort = getSort(function(a, b) {
    return a.age < b.age;
});

var nameSort = getSort(function(a, b) {
    return a.name < b.name;
});

var sexSort = getSort(function(a, b) {
    return a.sex && !b.sex;
});

//判斷條件先后順序可調(diào)整
var arr = [nameSort, ageSort, sexSort];

var ret = data.sort(getMutipSort(arr));

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104145.html

相關(guān)文章

  • 【30分鐘學(xué)會】用js玩點算法(1):排序基礎(chǔ)

    摘要:如果今天這個比例降低了,可能的原因之一是如今的排序算法更加高效,而并非排序的重要性降低了。約定都是從小到大排序,當(dāng)前項為。冒泡排序比較任何兩個相鄰的項,如果第一個比第二個大,則交換它們。 前言 前端工程師由于業(yè)務(wù)特點比較少接觸算法的東西,所以本系列也不會講太過深入的東西,更多的是作為知識擴(kuò)展和思維邏輯的培養(yǎng)。 排序就是將一組對象按照某種邏輯順序重新排列的過程,本篇將介紹幾種金典的排序...

    Richard_Gao 評論0 收藏0
  • 分鐘教你學(xué)會配置eslint,還在為風(fēng)格單雙引號,對象末位逗號要不要,引用各種報錯而煩惱?(建議收

    摘要:最全的配置大全,我已經(jīng)加了詳細(xì)中文注釋,只需要找到自己想要的配置就可以了,強烈建議收藏用法非常簡單,找到下的添加對象即可比如我要把規(guī)則原本單引號要變?yōu)殡p引號,那加上注意這個規(guī)則如果違反了規(guī)則情況下,這里的數(shù)字表示不不處理,表示警告,表示錯誤 最全的eslint配置大全,我已經(jīng)加了詳細(xì)中文注釋,只需要找到自己想要的配置就可以了,強烈建議收藏! 用法非常簡單,找到.eslintrc.js下...

    劉東 評論0 收藏0
  • 學(xué)會使用函數(shù)編程程序員(第1部分)

    摘要:函數(shù)式編程的目標(biāo)是盡量寫更多的純函數(shù),并將其與程序的其他部分隔離開來。在函數(shù)式編程中,是非法的。函數(shù)式編程使用參數(shù)保存狀態(tài),最好的例子就是遞歸。函數(shù)式編程使用遞歸進(jìn)行循環(huán)。在函數(shù)式編程中,函數(shù)是一級公民。 showImg(https://segmentfault.com/img/bVblxCO?w=1600&h=710); 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等...

    Steven 評論0 收藏0
  • 26天學(xué)通前端開發(fā)(配資料)

    摘要:網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知識點羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個前端框架。也可以關(guān)注微信公眾號曉舟報告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學(xué)習(xí)方法可以事半功倍,好的學(xué)習(xí)路徑可以指明前進(jìn)方向。這篇文章不僅要寫學(xué)習(xí)路徑,還要寫學(xué)習(xí)方法,還要發(fā)資料,干貨滿滿,準(zhǔn)備接招。 網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知...

    blair 評論0 收藏0
  • 18年求職面經(jīng)及總結(jié)

    摘要:年求職面經(jīng)及總結(jié)我的求職之路差不多走到盡頭了感覺真是精疲力盡了把這大半年的經(jīng)歷和面試總結(jié)寫下來希望能給和我一樣在求職路上煎熬的人一點幫助先說背景微電子科學(xué)與工程專業(yè)學(xué)過兩門和相關(guān)的課程語言和單片機(jī)這個專業(yè)的唯一好處就是大部分人并不知道這個專 18年求職面經(jīng)及總結(jié) 我的求職之路差不多走到盡頭了,感覺真是精疲力盡了.把這大半年的經(jīng)歷和面試總結(jié)寫下來,希望能給和我一樣在求職路上煎熬的人一點幫...

    zhangwang 評論0 收藏0

發(fā)表評論

0條評論

Donald

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<