我需要对一个数组进行排序,以相同的顺序对预先排序的数组中的项目进行优先排序。示例:
Input: [ 5, 4, 7, 2, 3, 9, 8 ]
Preordered: [ 1, 2, 4, 3 ]
基本上,preordered
数组将强制 input
数组遵循此顺序,但前提是两者都存在 item。如果不存在,将检查下一个索引。 preordered
数组中不存在的项目将保持原始顺序。继续示例:
▼ ▼ ▼ // 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
请注意,预订的将保持原始顺序。
附言。如果需要,我可以使用下划线
。
最佳答案
像这样?
result = _.intersection(Preordered, Input).concat(
_.difference(Input, Preordered))
关于javascript - 排序数组,优先排序一些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706024/