我想这取决于它是如何实现的。我喜欢它,如果有人回来告诉我“是的,几乎在所有浏览器中,只有在满足排序条件的情况下才会更改项目的顺序。
答案 0 :(得分:7)
您正在寻找的是算法是否“稳定”。众所周知,Firefox不是,而IE则是。 javascript标准不需要稳定的排序算法。
编辑:Firefox 3+有一个稳定的排序。请参阅http://www.hedgerwow.com/360/dhtml/js_array_stable_sort.html
答案 1 :(得分:1)
每个浏览器都有不同的实现,所以不要指望它。
答案 2 :(得分:0)
我认为这取决于您在数组中排序的对象类型。您可以为array.sort()提供“sort函数”,以确定对特定对象进行排序的规则。例如,考虑函数:
function sortInt(a, b){
if ( a < b )
return -1;
else if ( a == b )
return 0;
else if ( a > b )
return 1;
}
所以这显然是做作的,但你可以将同样类型的想法应用于任何“可比较”的对象。您将始终返回-1,0或1,具体取决于a是否小于,等于或大于b(尊重)。
然后你会说:array.sort(sortInt);
警告:
请原谅我,如果语法不完美,因为我手头没有示例。从跨浏览器的角度来看,我也不确定Array.sort()的稳定性。
修改:修正了伪造的代码段
的格式答案 3 :(得分:0)
所有主流浏览器都有稳定的排序算法,并且(因为有一些愚蠢的代码)它们可以处理不一致的比较函数。