gpt4 book ai didi

javascript - 如何在 JavaScript 中根据 "before"和 "after"条件对数组进行排序?

转载 作者:行者123 更新时间:2023-11-30 16:26:09 26 4
gpt4 key购买 nike

我想根据“之前”和“之后”条件对数组进行排序。

例子:

  • C 应该在 B 之前:示例:{key: 'C',条件:{$before: 'B'}
  • B 应该在 A 之后:示例:{key: 'B', condition: {$after: 'A'}
  • A:示例 {key: 'A'}

生成的排序列表将是:A、C、B

我需要这个,以便我可以对管道中的中间件列表进行排序。每个中间件都有一个条件,我应该提出一个满足所有中间件的所有条件的顺序。这类似于 MS Project 在给定任务要求的情况下在甘特图中组织任务。

问题:实现它的最简单方法是什么?甚至通过使用像 underscore 这样的外部库?奖励:这种排序有没有比“条件排序”更好的名字?这将有助于我的 Google 搜索。

编辑:输入应该是一组带有条件的项目。我无法对排序方法进行硬编码。

编辑 2:正如@Berdi 所说。这称为类型排序。是的,根据项目和条件,可能没有满足所有条件的组合,我的算法应该触发异常。

编辑 3:我考虑的实现方式是计算所有可能的组合,然后寻找第一个满足所有条件的组合。这对我来说可能不是很慢,因为在我的例子中,我可以在应用程序启动时只执行一次,并且数组中的项目不会超过 50 个。但无论如何,对于科学而言,了解更优化的解决方案是件好事。

编辑 4:我会接受仅适用于 after 条件的解决方案。喜欢 MS Project

最佳答案

Bonus: Does this kind of sorting have a name better than "conditional sorting"?

它叫做 topological sort .根据您的确切输入格式和内容,它甚至可能没有明确定义。

关于javascript - 如何在 JavaScript 中根据 "before"和 "after"条件对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com