javascript – 排序:是浏览器特定的

当我按标题对一组数组值进行排序时,它在Safari,Chrome和Firefox中给出了3个不同的结果.为什么行为如此?我用sproutcore框架.我用过

Array.sort(function(a,b){return function2(parameter1,parameter2,parameter3,parameter4)})

function2比较我的keyValue. function2又调用另一个比较函数来比较记录的值.此函数基于返回1,-1或0

record1.localeComapre(record2)

最佳答案 你怎么知道你得到了不同的结果?

其他人的经验表明localeCompare的行为在浏览器之间存在偏差.例如,见http://blog.schmichael.com/2008/07/14/javascript-collation-fail/,以及http://code.google.com/p/v8/issues/detail?id=459

如果没有详细了解比较器的工作原理,我现在无法提出更多建议.之后您可以编写一个快速检查并确认列表是否真正排序;如果结果是积极的,那么差异可归因于localeCompare的怪癖或排序例程的稳定性.

点赞