Javascript按其他数组的顺序排序

时间:2014-05-22 14:09:45

标签: javascript arrays sorting

我有一个大型数据集,我需要按预设顺序排序。它很简单,可以对数组进行排序,但问题是排序顺序中的值不会移动到 bottom 而不是顶部。这是我的代码......

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;
});

...和fiddle

我无法弄清楚如何将一个不在order数组中的东西视为较低排序顺序的条件。我尝试在现有条件之前添加if (aIndex < 0 || bIndex < 0) return -1;,但这可能与排序顺序中的两个 中的一个不正确。

1 个答案:

答案 0 :(得分:1)

您可以尝试将aIndexbIndex设置为order数组的长度(当它们为-1时),从而将它们推送到数组的末尾。

这个小提琴的例子:http://jsfiddle.net/a3LfP/1/