Javascript 我需要解释JS如何处理排序?
假设有一个数组 设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]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];
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]