【发布时间】:2015-12-07 03:13:41
【问题描述】:
我想根据“之前”和“之后”条件对数组进行排序。
例子:
- C
should be before B:示例:{key: 'C', condition: {$before: 'B'} - B
should be after A:示例:{key: 'B', condition: {$after: 'A'} - 答:例如
{key: 'A'}。
生成的排序列表将是:A, C, B。
我需要这个,所以我可以对管道中的中间件列表进行排序。每个中间件都有一个条件,我应该提出一个满足所有中间件的所有条件的顺序。这类似于MS Project 在考虑到任务要求的情况下以甘特图组织任务。
问题:实现它的最简单方法是什么?即使使用像underscore 这样的外部库?奖励:这种排序的名称是否比“条件排序”更好?这将有助于我的 Google 搜索。
编辑:输入应该是包含条件的项目数组。我无法对排序方法进行硬编码。
EDIT 2:正如@Berdi 所说。这称为类型排序。是的,根据项目和条件,可能没有满足所有条件的组合,我的算法应该会触发异常。
编辑 3:我正在考虑的实现方式是计算所有可能的组合,然后寻找满足所有条件的第一个组合。这对我来说可能不是很慢,因为就我而言,我可以在应用程序启动时只执行一次,并且数组中的项目不会超过 50 个。但无论如何,对于科学来说,最好知道一个更优化的解决方案。
编辑 4:我会接受仅适用于 after 条件的解决方案。喜欢MS Project。
【问题讨论】:
-
您只是想对数组进行排序,对吗?
标签: javascript sorting