在开发过程中发现,各个浏览器上的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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。