我知道 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,则返回 0...它仍然选择移动它。是否有处理排序字符串的修复程序?
最佳答案
JS 规范不要求排序算法稳定,因此您不能指望这一点。
解决不稳定排序问题的唯一明确方法是手动编写不同的稳定算法,或者添加一个额外的唯一键进行排序,以保证比较函数始终将两个元素视为彼此更大或更小,但永远不平等。原始数组索引就可以了。
关于javascript - Chrome - Javascript 排序不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824838/