javascript - 排序回调函数参数的正确顺序是什么?
问题描述
您可以在任何地方(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”等于数组的第一个元素,这实际上根本不是真的?
解决方案
以及为什么有大量文章和 youtube 视频说“a”等于数组的第一个元素
这就是为什么我们不应该相信我们读到或看到的一切。浏览器应该如何实现的实际记录细节sort
没有提到这一点。事实上,它指出:
使用实现定义的对 SortCompare 的调用序列对项目进行排序。
所以这完全取决于浏览器应该如何实现。最终结果是一样的,所以我真的不明白为什么这很重要。
推荐阅读
- excel - 如何使用注册表中的值初始化 useform 复选框
- javascript - 更改链接上的页面布局单击 vue.js
- python - 在墙上弹跳 pygame 蒙版对象
- sql - MS-Access:删除重复的行,但保留最新日期的行
- python - Word Cloud:代码未显示错误,但显示 wordcloud 会引发名称错误
- ios - 为什么从 JPEG 创建 UIImage 然后导出为 JPEG 会导致文件比原始文件大很多倍?
- url - 单个嵌入 URL 中的多个 YouTube 视频
- r - R中的符号 %<-% 是什么意思?
- perl - 使用 Mojolicious::Plugin::SecureCORS 允许 CORS
- ios - 在 SceneKit iOS 中渲染流式视频的最有效方法是什么?