我有一个大型数据集,我需要按预设顺序排序。它很简单,可以对数组进行排序,但问题是排序顺序中的值不会移动到 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;
,但这可能与排序顺序中的两个 中的一个不正确。
答案 0 :(得分:1)
您可以尝试将aIndex
和bIndex
设置为order
数组的长度(当它们为-1时),从而将它们推送到数组的末尾。
这个小提琴的例子:http://jsfiddle.net/a3LfP/1/