首页IT科技java sort源码(原生JS之sort排序方法详解)

java sort源码(原生JS之sort排序方法详解)

时间2025-05-02 09:30:05分类IT科技浏览4326
导读:在JavaScript中排序主要用到的api就是sort了,但是使用sort有几个坑需要注意,让我们一起来看看...

在JavaScript中排序主要用到的api就是sort了          ,但是使用sort有几个坑需要注意                  ,让我们一起来看看

排序原理-不使用参数时

sort() 方法用于对数组的元素进行排序          。排序顺序可以是字母或数字      ,并按升序或降序                  。

默认排序顺序为按字典升序      。

在不使用参数时       ,sort使用的是字典排序

如果数组中元素都是字符串                  ,这点很好理解         ,比如:

var arr= new Array(); //创建一个空数组 arr= [sun,xu,ma,he,wang,zhang]; arr.sort(); //调用sort方法

输出结果为:

he ma sun wang xu zhang

但是如果是数字呢?让我们来看看:

var a = new Array(); a = [1,10,100,5,25,99]; a.sort();

输出结果为:

1 10 100 25 5 99

令人费解       。                  。         。但其实如果知道其原理就很容易理解    ,sort默认是按照字典顺序排序的;

字典序

字典序(dictionary order)                 ,又称 字母序(alphabetical order)            ,原意是表示英文单词在字典中的先后顺序  ,在计算机领域中扩展成两个任意字符串的大小关系    。

英文中的 字母表(Alphabet) 按照如下的顺序排列:

ABCDEFG HIJKLMN OPQRST UVWXYZ

abcdefg hijklmn opqrst uvwxyz

在字典中                ,单词是按照首字母在字母表中的顺序进行排列的               ,比如 alpha 在 beta 之前                 。而第一个字母相同时,会去比较两个单词的第二个字母在字母表中的顺序             ,比如 account 在 advanced 之前                  ,以此类推            。下列单词就是按照字典序进行排列的:

as

aster

astrolabe

astronomy

at

ataman

attack

baa

在计算机领域中   ,这个字典序就不仅仅用来比较英文单词了          ,而是比较任意字符串  。对于两个字符串                  ,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系                。比如ah1x小于ahb      ,Z5小于a3       ,10小于101等

排序原理-使用参数

在大多数情况下                  ,我们需要将数组中的数字按大小排序         ,就必须使用一个函数

使用数字排序    ,你必须通过一个函数作为参数来调用;函数指定数字是按照升序还是降序排列               。

// 数组排序 sort let arr=[1,8,2,6,9,12,64,86,3,5,4,9,4] console.log(-------------------------这是升序--------------------); console.log(arr.sort(sort_s)); console.log(-------------------------这是降序--------------------); console.log(arr.sort(sort_j)); // 升序 function sort_s(a,b){return a-b; } // 降序 function sort_j(a,b){return b-a; }

输出结果为:

注意事项

这种方法会改变原始数组! 这种方法会改变原始数组!这种方法会改变原始数组!重要的事情说三遍                 ,排完后会直接影响原数组            ,并且元素不会进行复制  ,也就是说                ,sort()的返回值为原数组的引用               ,例如:

let arr=new Array() arr=[2,4,1,8,5,3] let arrt=arr.sort((a,b)=>a-b) console.log(arr===arrt)//true

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结             ,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实                  ,对各个知识点的讲解也十分到位             。

有需要的小伙伴   ,可以点击下方卡片领取          ,无偿分享

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
js如何获取input的value值(JavaScript 获取 input 输入框内容的方法) windows2012开启端口失败(Win11/10系统怎么启用和配置SNMP服务?)