Javascript 排序数组,对某些项进行优先级排序
我需要对一个数组进行排序,以相同的顺序优先排序预排序数组中的项目。例如:Javascript 排序数组,对某些项进行优先级排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我需要对一个数组进行排序,以相同的顺序优先排序预排序数组中的项目。例如: Input: [ 5, 4, 7, 2, 3, 9, 8 ] Preordered: [ 1, 2, 4, 3 ] 基本上,preordered数组将强制input数组遵循此顺序,但前提是两者上都存在项。如果不存在,将检查下一个索引。预订购数组中不存在的项目将保持原始顺序。继续举例: ▼ ▼ ▼ // exists on preordered arra
Input: [ 5, 4, 7, 2, 3, 9, 8 ]
Preordered: [ 1, 2, 4, 3 ]
基本上,preordered
数组将强制input
数组遵循此顺序,但前提是两者上都存在项。如果不存在,将检查下一个索引。预订购
数组中不存在的项目将保持原始顺序。继续举例:
▼ ▼ ▼ // exists on preordered array
Input: [ 5, 4, 7, 2, 3, 9, 8 ]
▼ // not exists on index array, so ignore it:
Preordered: [ 1, 2, 4, 3 ].intersect(input) => [ 2, 4, 3 ]
这样,我们可以确定input
上的三个项存在于preordered
数组中。因此,这些项目将首先显示结果。input
上的其他项目将保持原始顺序,但在初始排序之后:
▼ ▼ ▼ // keeping preordered array order
Result: [ 2, 4, 3, 5, 7, 9, 8 ]
▲ ▲ ▲ ▲ // keeping others items original order
请注意,预订购的将保持原始订单
PS.如果需要,我可以使用下划线。像这样吗
result = _.intersection(Preordered, Input).concat(
_.difference(Input, Preordered))
因此,最终不需要排序,只需对交叉点进行分组、预处理,然后追加输入数组的剩余部分?是否input
和/或Preordered
有重复项?@depperm我以前尝试过,但没有成功(我不记得交叉点),但在写入时,它帮助我解决了我的问题——答案排在第一位,对我也有很大帮助。但是,由于它可以用于其他开发人员(可能?),所以我发布了它。我不确定是否有否决票,我也有同样的想法。至少,这个问题是这样描述的。@KimGysen:有了68K代表,georg应该知道“像这样?”是回答问题的一个糟糕的借口。我不是那个被否决的人,但我猜这个解决方案缺少了预排序/输入交叉点的排序。我认为差异不是有序的,但交叉点是我猜这是我的错,它起作用了!不得对交叉口进行排序。它也需要保持原来的秩序。谢谢!