【问题标题】:How to create sort method in Dart?如何在 Dart 中创建排序方法?
【发布时间】:2019-11-22 13:01:54
【问题描述】:

给定几个月的List<String>,我如何在 Dart 中创建自己的排序方法?
考虑一下relevant link

排序顺序是:

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

示例

给定:

List<String> months = ["October", "January", "July"];

预期的输出是:

["January", "July", "October"]

【问题讨论】:

    标签: sorting dart


    【解决方案1】:

    您可以使用List.sort method
    使用您提供的排序顺序,您可以使用indexOf 获取表示排序“权重”的整数值,然后使用num.compareTo 返回一个 值如果元素a 应该出现在元素b之前,即indexOf值较小,如果它应该出现在元素b之后,则为值:

    const List<String> sortingOrder = ['January', 'February', 'March', 'April',
      'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    
    List<String> months = ['October', 'January', 'July'];
    months.sort((a, b) => sortingOrder.indexOf(a).compareTo(sortingOrder.indexOf(b)));
    
    print(months); // [January, July, October]
    

    这样,您显然可以非常轻松地创建对不同类型的值进行排序的任何类型的排序顺序。

    【讨论】:

    • .indexOf 重复使用会很昂贵。您应该创建一个映射 1 月到 1 日、2 月到 2 日等的地图,然后按此排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2019-07-19
    • 1970-01-01
    • 2013-06-02
    • 2020-10-31
    • 2015-03-02
    相关资源
    最近更新 更多