【问题标题】:JavaScript string array custom sortingJavaScript 字符串数组自定义排序
【发布时间】:2020-05-29 16:51:33
【问题描述】:

您好,我正在尝试在 JavaScript 中实现自定义字符串比较器函数。有一些特殊值我希望它们总是在其他值之前,其余的只是按字母顺序排序。 例如,如果我有一个数组(“非常重要”“重要”,“不太重要”)是三个特殊值(应该有如上的顺序)

    ["e","c","Less Important","d","Very Important","a",null,"Important","b","Very Important"]. 

排序后的数组应该是(如果有null或未定义的值,需要放在最后)

    ["Very Important", "Very Important", "Important", "Less Important" "a","b","c","d","e",null]  

如何为上述要求编写比较器函数? (我使用库的比较器 api,所以我无法对数组进行排序,但需要使用比较器实现逻辑(如 java 中的 compareTo 返回 0,1,-1)

非常感谢

【问题讨论】:

    标签: javascript arrays sorting ecmascript-6 comparator


    【解决方案1】:

    你可以

    • null 值移至底部,
    • 'Very Important' 字符串移到顶部,
    • Important' 字符串移到顶部并
    • 对其余部分进行升序排序。

    var array = ["Important", "e", "c", "d", "Very Important", "a", null, "b", "Very Important"];
    
    array.sort((a, b) =>
        (a === null) - (b === null) ||
        (b === 'Very Important') - (a === 'Very Important') ||
        (b === 'Important') - (a === 'Important') ||
        a > b || -(a < b)
    );
    
    console.log(array);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

    • 谢谢!该函数如何处理第二个特殊值“重要”?还有我怎样才能把你的逻辑变成一个返回-1,0,1的比较器函数?
    • 增量返回一个数值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多