首页 > 解决方案 > 排序回调函数参数的正确顺序是什么?

问题描述

您可以在任何地方(youtube,文章)看到js排序方法的“a”“b”参数分别对应于数组的第一个第二个元素。错了,看看:

const numbers = [3,2,1];

numbers.sort((a, b) => {
  console.log(a,b);
  return a - b;
});
console.log(numbers);

控制台如下所示:

2 3
1 2
[1, 2, 3]

我们清楚地看到第一次执行回调时“a”和“b”的值是2和3。 这违反所有逻辑啊哈!

不要误会我完全理解了这个函数和它下面的排序算法,但是为什么“a”不等于数组的第一个元素?:)

为什么有大量文章和 youtube 视频说“a”等于数组的第一个元素,这实际上根本不是真的?

标签: javascript

解决方案


以及为什么有大量文章和 youtube 视频说“a”等于数组的第一个元素

这就是为什么我们不应该相信我们读到或看到的一切。浏览器应该如何实现的实际记录细节sort没有提到这一点。事实上,它指出:

使用实现定义的对 SortCompare 的调用序列对项目进行排序。

所以这完全取决于浏览器应该如何实现。最终结果是一样的,所以我真的不明白为什么这很重要。


推荐阅读