sort string

一般Array.prototype.sort用來排序數(shù)字,如果用來排序字符串,可以先轉(zhuǎn)換成數(shù)字,然后方便排序

/**
 * 可自定義排序順序,例如: ['limit', 'reverse', 'new'],就表示limit永遠在最前面,然后是reverse,然后是new,最后是不在數(shù)組中的
 */
const sortGenerator = (order, sortProperty) => (a, b) => {

    const orderOfA = order.indexOf(a[sortProperty]);
    const orderOfB = order.indexOf(b[sortProperty]);

    if (orderOfA !== -1 && orderOfB !== -1) return orderOfA - orderOfB;
    if (orderOfA !== -1 && orderOfB === -1) return -1;
    if (orderOfA === -1 && orderOfB !== -1) return 1;
    if (orderOfA === -1 && orderOfB === -1) return 0;
};

這樣,例如

    const test = [
        {
            promotionType: 'new',
        },
        {
            promotionType: 'reverse',
        },
        {
            promotionType: 'limit',
        },
    ];
    const sortFn = sortGenerator(['limit', 'reverse', 'new'], 'promotionType') // 定義順序和排序的屬性
    test.sort(sortFn)
    // 結(jié)果如下
    assert.deepEqual(test, [
        {
            promotionType: 'limit',
        },
        {
            promotionType: 'reverse',
        },
        {
            promotionType: 'new',
        },
    ]);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,675評論 0 4
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,908評論 0 33
  • 首發(fā)于:segmentfault《JavaScript語言精粹 修訂版》 讀書筆記 之前看到這篇文章,前端網(wǎng)老姚淺...
    若川i閱讀 930評論 0 3
  • 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 777評論 0 0
  • 公司:寧波大發(fā)化纖有限公司 姓名:陸小燕 期數(shù):六項精進234期學員 組號:利他三組 [日精進打卡第181天] [...
    牛媽牛媽閱讀 140評論 0 0

友情鏈接更多精彩內(nèi)容