javascript - 排序数组,优先排序一些项目

标签 javascript arrays sorting

我需要对一个数组进行排序,以相同的顺序对预先排序的数组中的项目进行优先排序。示例:

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/

相关文章:

c++ - 如何从 C++ 数组中删除重复项?

java - 即使实现了可比性,也无法将类转换为 java.lang.Comparable

javascript - 控制 jQuery 按钮代理函数中的上下文

javascript - "var self = module.exports;"是什么意思?

javascript - 如何将节点列表对象传递给后台脚本?

关于在 java 中创建类数组的 java.lang.ClassCastException

algorithm - 无法弄清楚如何按受欢迎程度对文章进行排序

javascript - 仅捕获链接上的左键单击

javascript - 使用函数传递数组进行排序

arrays - 检查元素是否存在于 Bash 数组中