Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 排序数组,对某些项进行优先级排序_Javascript_Arrays_Sorting - Fatal编程技术网

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应该知道“像这样?”是回答问题的一个糟糕的借口。我不是那个被否决的人,但我猜这个解决方案缺少了预排序/输入交叉点的排序。我认为差异不是有序的,但交叉点是我猜这是我的错,它起作用了!不得对交叉口进行排序。它也需要保持原来的秩序。谢谢!