javascript array.sort兼容性问题

在开发过程中发现,各个浏览器上的Array.prototype.sort内部算法实现机制不一样,导致执行结果有偏差。
根据stackoverflow上的问答和维基百科上的结果,可以知道 chrome 目前采用快排(QuickSort)和插入排序(InsertaionSort),而对于火狐,它采用归并排序(MergeSort)。而IE使用快排。

另外IE的sort 需要显示声明返回-1, 0, 1三种比较结果才可正常工作,而Chrome, Firefox中可以直接返回true, false等。

image.png

这段代码,在chrome中将返回:

image.png

但是在IE里数组顺序并不会发现变化。
因此,兼容性写法是:
image.png

确保回调函数中返回的结果是显示的-1,0,1。
转载
作者:SCQ000
链接: https://www.jianshu.com/p/459e6d141aef
来源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(javascript array.sort兼容性问题)