在 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; // // 意即