我需要解释JS如何处理排序?

时间:2018-10-01 14:59:04

标签: javascript node.js sorting

假设存在数组

  

let arr = [10,12,3,2,5,1,9,7,8,8,9,4];

尝试一下

  

arr.sort((a,b)=> a> b);

     

//结果:[1、4、3、2、5、7、8、9、9、10、12]

但是,使用此

  

arr.sort((a,b)=> a-b);

     

//结果:[1、2、3、4、5、7、8、9、9、10、12]

let arr = [10, 12, 3, 2, 5, 1, 9, 7, 8, 9, 4];

console.log(arr.sort((a, b) => a > b));

let arr1 = [10, 12, 3, 2, 5, 1, 9, 7, 8, 9, 4];

console.log(arr1.sort((a, b) => a - b));

1 个答案:

答案 0 :(得分:2)

这是一本很好的读物,用于了解Array.sort()的工作原理

引用与您的问题有关的内容:

  

如果compareFunction(a,b)   小于0,请将a排序为小于b的索引,即a在前。

     

如果compareFunction(a,b)返回0,则使a和b保持不变   彼此尊重,但针对所有不同   元素。

     

注意:ECMAscript标准不能保证这一点   行为,因此并非所有浏览器(例如Mozilla版本约会   至少要追溯到2003年)。

     

如果compareFunction(a,b)是   大于0,则将b排序为小于a的索引,即b位于第一位。

这:

String.Type

返回arr.sort((a, b) => a > b); true,其值为1或0,从不为-1

因此,使用此“不完整”功能,结果取决于执行代码的引擎所使用的排序算法

  • rhino.js :10,12,3,2,5,1,9,7,8,9,4
  • SpiderMonkey :1、2、3、4、5、7、8、9、9、10、12
  • v8 :1、4、3、2、5、7、8、9、9、10、12