【问题标题】:How to implement multi level sorting in javascript using lodash?如何使用 lodash 在 javascript 中实现多级排序?
【发布时间】:2021-03-11 14:35:30
【问题描述】:

问题: 带有过滤系统的工作板,用户可以在其中设置标签偏好。

我需要根据匹配的标签数量对作业列表进行排序,多个作业可以具有相同的标签计数,然后我必须对每个标签计数组中最近的作业进行排序。

我现在的方法:我根据标签匹配计数对作业进行分组。我忽略了那些计数为零的。我继续按日期降序对每个组进行排序。 最后按照标签计数的降序合并集合。

在 lodash 或普通 javascript 中使用 reduce、map、filter 等函数式编程是否有更好的方法。 DateA

Input:
[
  { tagCount: 2, date: DateA},
  { tagCount: 2, date: DateB},
  { tagCount: 1, date: DateC},
  { tagCount: 3, date: DateD},
]

Output:
[
  { tagCount: 3, date: DateD},
  { tagCount: 2, date: DateB},
  { tagCount: 2, date: DateA},
  { tagCount: 1, date: DateC}
]

【问题讨论】:

    标签: javascript functional-programming lodash


    【解决方案1】:

    您可以使用_.orderBy() 和状态['tagCount', 'date'] 作为排序属性,并使用['desc', 'desc'] 作为它们各自的排序顺序:

    desc 作为排序顺序:

    const input = [{ tagCount: 2, date: 'DateA'}, { tagCount: 2, date: 'DateB'}, { tagCount: 1, date: 'DateC'}, { tagCount: 3, date: 'DateD'}]
    
    const result = _.orderBy(input, ['tagCount', 'date'], ['desc', 'desc'])
    
    console.log(result)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>

    【讨论】:

    • 它没有给出想要的结果......它最终根据日期排序..我需要它只使用问题中提到的 tagCount 组中的日期排序......
    • 你运行 sn-p 了吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2021-08-25
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2015-06-06
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多