Javascript按其他数组的顺序排序

Javascript按其他数组的顺序排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个大数据集,需要按预设顺序排序。对数组进行排序非常简单,但问题是排序顺序不一致的值会移到底部而不是顶部。这是我的密码 var order = ["value1", "value2", "value3"]; var result = ["value4", "value2","value1","value1", "value3"].sort(function(a,b) { var aIndex = order.indexOf(a), bIndex = order.in

我有一个大数据集,需要按预设顺序排序。对数组进行排序非常简单,但问题是排序顺序不一致的值会移到底部而不是顶部。这是我的密码

var order = ["value1",  "value2", "value3"];
var result = ["value4", "value2","value1","value1", "value3"].sort(function(a,b) {
    var aIndex = order.indexOf(a),
        bIndex = order.indexOf(b);

    if (aIndex > bIndex)
        return 1;
    if (aIndex < bIndex)
        return -1;
    return 0;
});
var顺序=[“value1”、“value2”、“value3”];
var结果=[“value4”、“value2”、“value1”、“value1”、“value3”]。排序(函数(a、b){
var aIndex=订单指数(a),
bIndex=订单索引(b);
如果(aIndex>bIndex)
返回1;
if(aIndex
…还有


我不知道如何有一个条件,认为排序数组中没有的东西是较低的排序顺序。我尝试添加
if(aIndex<0 | | bIndex<0)返回-1在现有条件之前,但这可能是不正确的,因为这两个条件中的一个在排序顺序中。

您可以尝试将
aIndex
bIndex
设置为
顺序
数组的长度(当它们为-1时),从而将它们推到数组的末尾

这把小提琴的例子: