Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要解释JS如何处理排序?_Javascript_Node.js_Sorting - Fatal编程技术网

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

Javascript 我需要解释JS如何处理排序?,javascript,node.js,sorting,Javascript,Node.js,Sorting,假设有一个数组 设arr=[10,12,3,2,5,1,9,7,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] 让arr=[10,12,3,2,5,1,9,7,8,9,4]; log(arr.sort((a,b)=>a>b)); 设arr1=[10,12,3,2,5,1,9,7,8,9,4]; lo

假设有一个数组

设arr=[10,12,3,2,5,1,9,7,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]

让arr=[10,12,3,2,5,1,9,7,8,9,4];
log(arr.sort((a,b)=>a>b));
设arr1=[10,12,3,2,5,1,9,7,8,9,4];

log(arr1.sort((a,b)=>a-b))这是一本很好的读物,可以帮助您了解工作原理

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

如果比较函数(a,b) 小于0,将a排序为低于b的索引,即a排在第一位

如果compareFunction(a,b)返回0,则将a和b保持不变,并使用 相互尊重,但根据所有不同的 元素

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

如果比较函数(a,b)为 大于0时,将b排序为低于a的索引,即b排在第一位

这是:

arr.sort((a, b) => a > b);
返回
true
false
,其计算结果为1或0,从不为-1

因此,对于这个“不完整”函数,结果取决于执行代码的引擎使用的排序算法

  • rhino.js:10,12,3,2,5,1,9,7,8,9,4
  • 蜘蛛门钥匙:1,2,3,4,5,7,8,9,9,10,12
  • v8:1,4,3,2,5,7,8,9,9,10,12

默认排序比较器采用字符串,而不是数字。我在代码段中为两个数组得到相同(正确)的结果。你在哪个JS引擎中运行这个呢?因为作为比较器的结果,
a>b
是不够的,如果a>b,它返回1,但是在所有其他情况下都返回0,而如果a[1、10、12、2、3、4、5、7、8、9、9]
@Pointy。如果没有提供比较功能,正如我所说的,结果将是
[1,10,12,2,3,4,5,7,8,9,9]