终于理解了 Array.sort(comparator) 的工作原理

原文信息: 查看原文查看原文

Finally Understanding How Array.sort(comparator) Works

- James Kerr

在经历了13年的JavaScript编程之后,我终于找到了一种方法来记住 Array.sort() 中比较函数的工作原理。

我认为问题在于所有的示例都使用了这种简写语法。

array.sort((a, b) => b - a); // 对James来说太难了

这对我来说太令人困惑了。过去,我会尝试 b - a 然后尝试 a - b,然后选择给我想要的结果的那个。但现在我有一个足够简单的思维模型,让我能够记住。

首先,比较函数的唯一目的就是要回答这个问题:

“a” 在新排序的数组中应该放在哪里?是在 “b” 的左边还是右边?

传递给比较函数的参数通常命名为 ab。这对我来说是有意义的,因为第一个参数在第二个参数之前,而且 a 在英文字母表中排在 b 前面。这些参数代表数组中的两个项目。

现在让我们考虑返回值。该函数必须返回一个数字。数字存在于从左到右的数轴上,就像数组中的项目一样。负数在左边,零在中间,正数在右边。

-3   -2   -1   0   1   2   3
----------------------------
    一个好的老式数轴

所以,如果你的比较函数返回一个 负数,第一个参数 a 会先出现,在 b 之前。就像数轴上的负数先出现一样!

如果函数返回一个 正数,第一个参数 a 会在 b 之后出现。项目 a 将位于 b 的“右边”,就像数轴上的正数位于“右边”一样!

🤯

如果函数返回0,现有元素的顺序将不会有任何变化。这个很容易记住。

总结一下,我们只是想要找出 a 应该去哪里。它是在 b 的左边还是右边。负数意味着左边,正数意味着右边。数轴。从左到右。

数轴的“从左到右”,数组中的项目,字母表,以及位置参数,今天对我来说终于清晰了。

也许这对你也有帮助,你可以理解这一点,并且可以节省自己13年的时间,不用再去谷歌搜索“Array.sort(comparator) 是怎么工作的?”。

分享于 2024-05-06

访问量 56

预览图片