在 JavaScript 中的数组有内建的 sort
方法,可以让我们不用自己手写排序算法,也能够有高效能的排序方法可用。然而,你知道sort
要怎么用吗? 在sort
中要传入的compareFn
又是如何运作的? 当compareFn
是(a, b) => b - a
时,排序会是升序还是降序? 为什么呢?
这一连串的问题,不仅是工作中很常用到,也是面试的高频问题,务必确保自己这个观念有融会贯通。假如还不熟的话,就让我们一起透过这篇文章一探究竟。
如何使用 sort
假如看MDN 的文件,可以看到sort
的用法是这样。
sort(compareFn);
其中的 compareFn
需要两个参数 a
与 b
,在比较的规则中,一定要回传 1
、0
或 -1
。其中要遵循的规则如下:
function compareFn(a, b) {if (a 比 b 大) {return 1; // 意即 a 放在 b 后面}if (a 比 b 小) {return -1; // 意即 a 放在 b 前面}// a 等同于 breturn 0; // // 意即