亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Donald / 637人閱讀

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

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

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

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

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

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

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

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

   如性別的判斷,男or女
   條件判斷函數(shù)的參數(shù)實(shí)際為相鄰的兩個(gè)待排序的元素
   通過(guò)對(duì) (a, b) => boolean函數(shù)的包裝,即可實(shí)現(xiàn)小于0、等于0、大于0的結(jié)果
   只需要在調(diào)用時(shí),調(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104145.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    zhangwang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<