3

我知道 Chrome 的排序不稳定问题,但是在排序字符串时我不知道如何解决这个问题。

myArray.sort(function(a, b){
        var typeA=a.toLowerCase();
        var typeB=b.toLowerCase();

        return (typeA < typeB) ? -1 : (typeA > typeB) ? 1 : 0;
        });

在 FF 和 Safari 中运行良好,但在 Chrome 中这仍然返回错误的顺序。也就是说,Chrome 不尊重如果 typeA == typeB,return 0...它仍然选择移动它。是否有解决排序字符串的方法?

4

1 回答 1

2

JS 规范不要求排序算法是稳定的,所以你不能指望它。

解决不稳定排序问题的唯一确定方法是手动编写不同的稳定算法,或者添加一个额外的唯一键进行排序,以确保比较函数始终将两个元素视为彼此更大或更小,但绝不会视为平等的。原始数组索引就可以了。

于 2012-10-10T18:10:49.890 回答