sort()排序曾经迷惑我。。。

不知道大家在学习sort()排序时候,解决它排序方式问题,会使用某种function,来进行调整。当我刚刚知道原理时,我濒临崩溃:妈的内置功能不早说,我还以为多高明呢!!!

当你使用sort()相对数组进行排序时,你会蒙圈的:

var a = [1,234,3,5,4,6,3,63,54,4,43,4];
console.log(a.sort());//1,234,3,3,4,4,4,43,5,54,6,63

这时,某大神告诉我,要这样写:

console.log(a.sort(function(v1,v2){
    return v1-v2;
}).join());//1,3,3,4,4,4,5,6,43,54,63,234

果然解决了,但是,为啥?我就冥思苦想,想了快半年了,也没想出头绪(这就跟给你张鸟腿的图片,让你猜什么鸟一样嘛)

知道今天,我看到了这个,我的愤怒与自责。。。

sort内部使用快速排序,每次比较两个元素大小的时候如果没有参数,则直接判断字母表,如果有参数,则把正在比较的两个参数传入自定义方法并调用(正在比较的两个数会传给自定义方法的v1、v2),如果返回值大于0表示v1 > v2,如果等于0,表示v1 = v2,如果小于0,表示v1 < v2,其实我们传入的方法就是告诉sort怎么比较两个元素谁大谁小,至于排序移动元素过程人家写好了

试一下,果然,妈蛋。。。

console.log(a.sort(function(v1,v2){
    return v2-v1;
}).join());//234,63,54,43,6,5,4,4,4,3,3,1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • 弗洛伊德算法适用于为图中每一个顶点求最短路径,思路如下 检查图中任何一个 到 任何另一个点能否通过第一个点降低最短...
    RichardW阅读 4,514评论 0 1
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 数组 在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于...
    南山码农阅读 1,553评论 0 0
  • 文/白萍 一路走来, 感受到人生的幸福与快乐; 也品尝过生活的艰辛与曲折。 悠悠岁月, 我们却依然还在演绎着它的更...
    悟姑娘阅读 1,288评论 0 1

友情链接更多精彩内容