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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在开发过程中发现,各个浏览器上的Array.prototype.sort内部算法实现机制不一样,导致执行结果有偏差...
    SCQ000阅读 4,486评论 0 52
  • Java 容器 & 泛型:四、Colletions.sort 和 Arrays.sort 的算法 Writer:B...
    青城楼主阅读 602评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,251评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,296评论 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,958评论 1 45