我想排序与自定义比较函数的数组。Javascript数组排序不正确时,许多相等的元素
比较器函数只关心两个特定元素之间的顺序。
在下面的示例中,您希望'a'在排序后出现在'b'之前,但事实并非如此。
var ar = ["b", "c", "d", "a"];
ar.sort(function(x, y) {
if (x == 'a' && y == 'b') { return -1; }
if (x == 'b' && y == 'a') { return 1; }
return 0; // only the order between 'a' and 'b' matters.
});
console.log(ar);
// ar is still ["b", "c", "d", "a"];
那么为什么在'b'之前不是'a'?有没有解决方法?
我不在乎这个例子中其他元素的顺序。在这个问题出现的真实场景中,订单可能有多个配对。 – 2012-07-19 01:41:20
我正在尝试z-sprites。当它们相交时,我可以确定哪个应该在最上面。如果精灵不相交,我从比较器返回0。 – 2012-07-19 01:53:50