JavaScript 数组排序函数sort()的使用

JavaScript 数组排序函数sort()的使用简介  sort()方法是js中对于数组进行排序的函数。其可以方便快捷的实现对于数组的排序而不用我们自己编写排序方法。注:sort()函数会直接改变原数组。1.纯字符串数组排序letmyArray=[“people”,”person”,”apple”,”ziv”]console.log(myArray.sort())//打印结果[‘apple’,’people’,’person’,’ziv’]  其对于字符串数组直接按照字典顺序进行排序。注意:大小写字母也会影响排序结果,大

大家好,又见面了,我是你们的朋友全栈君。

简介

  sort()方法是js中对于数组进行排序的函数。其可以方便快捷的实现对于数组的排序而不用我们自己编写排序方法。注:sort()函数会直接改变原数组。

1.纯字符串数组排序

let myArray = ["people","person","apple","ziv"]
console.log(myArray.sort())
// 打印结果[ 'apple', 'people', 'person', 'ziv' ]

  其对于字符串数组直接按照字典顺序进行排序。注意:大小写字母也会影响排序结果,大写字母排在小写字母前面。

2.纯数字数组排序

let myArray = [541,2,34,55,311]
console.log(myArray.sort())
// 打印结果 [ 2, 311, 34, 541, 55 ]

  我们明显可以看出其排序结果并没有按照元素数值的大小进行排序,而是根据其每个位置上元素的字符顺序排列。所以sort()函数在不传参的情况下对数字数组也是按照字符顺序排序。

3.混合类型数组排序

let myArray = [1,2,'dwef',3, ,'ffff',undefined,5,NaN,9999999999999999999999]; // NaN的定义为一个数字类型的常量,所以排在字符串前面。
console.log(myArray.sort())
// 打印结果 [ 1, 1e+22, 2, 3, 5, NaN, 'dwef', 'ffff', undefined, <1 empty item> ]

  我们看到排序结果有些微妙:

  • 数字排列在字母前面
  • 9999999999999999999999被转换成科学计数法后排列在数字2的前面
  • NaN在js中是一个数值常量,排列在数值类型的最后面
  • undefined排列在字符串后面
  • 空元素被排列在最后

4.按照自定义方法进行排序。执行非字典顺序的排序

  sort()方法可以接收一个函数,这个函数有两个参数,函数的返回值决定了数组的返回结果
函数的返回值有大于0,小于0,等于0三种结果。我们用一个例子来解释一下。

let myArray = [541,2,1,34,55,311];
// 这个数组是第二步我们使用的数组,我们可以看到如果直接用sort()排序,它的结果为[ 2, 311, 34, 541, 55 ]
myArray.sort(
    function (x,y){ 
   
        console.log(x,y,x-y)
        return x-y
    }
);
console.log(myArray)
/*打印结果: 2 541 -539 34 2 32 34 541 -507 34 2 32 55 34 21 55 541 -486 311 55 256 311 541 -230 [ 2, 34, 55, 311, 541 ] * */

   因为不同浏览器对于sort()的内部实现不同,所以我们不对sort()内部实现做过多的解释,大体是分为插入、快速、归并、桶排序几种。
   这个匿名函数的返回值决定了数组的排序结果,现在我们传进去了x,y两个参数(有顺序,x在y的前面),如果x>y,则x-y>0,匿名函数返回的是一个正值,则x,y的位置会变换。
   如我们传进去了 541,2, 因为541-2 > 0 ,所以541和2的位置会变化,在排序后的数组中,541的索引大于2的索引。所以如果想要实现一个升序的数组,返回值为x-y就可以。
   在参数位置(x,y)不发生改变的情况下,想要实现降序,即如果x>y,顺序不变,x<y颠倒顺序,所以在x<y的的时候,我们要让返回值大于0,所以此时返回值为 y-x。

   以上例子已经讲解了返回值为什么要为x-y或者y-x。下面就总结一下sort()排序的主要事项:

  1. sort()函数默认按照字典顺序进行排序。
  2. sort()函数可以接收一个函数作为参数。
  3. 这个参数函数的返回值决定了数组的排序。返回值大于0会变换两个参数的位置,返回值小于0不会变换两个参数的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143848.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 多年收集的一些稀有软件_魔兽世界野外稀有小宠物

    多年收集的一些稀有软件_魔兽世界野外稀有小宠物QQ:365543212DigitalCanalMultipleLoadFootingv4.51CD(定义出梯形的、带状的或矩形的脚柱的多种负重)DigitalCanalQuickWallv5.71CD(保留墙设计软件,同时拥有卓越的精确性)DigitalCanalSpreadFootingv2.31CD(圆柱体设计软件,可以同时处理10个圆柱体还可以…

    2022年8月24日
  • 修改文件夹图标_把某程序的图标拖到启动文件夹中

    修改文件夹图标_把某程序的图标拖到启动文件夹中版权声明:本文为博主原创文章,仅作为学习交流使用转载请注明出处:https://www.cnblogs.com/linck/p/10587339.html面对千篇一律的文件夹图标,可以通过简单设置

    2022年8月5日
  • Node.js/Vue环境搭配安装

    Node.js/Vue环境搭配安装

    2021年10月11日
  • centos7安装图形化界面图文详解

    centos7安装图形化界面图文详解centos7没有图形化操作可能对很多人来说都不太习惯,下面我们来为centos7安装图形化界面,本文以安装GNOME图形化为例写在安装前:如果你的centos7是最小化安装的那默认都是不带XWINDOWS的,那在安装图形化界面之前,你得先安装一下XWINDOWS,这个控制功能 yumgroupinstall”XWindowSystem”1.输入安装命令 yumgro…

    2022年4月28日
  • 计算机的139 135 445端口关闭_系统端口设置在哪里

    计算机的139 135 445端口关闭_系统端口设置在哪里近期永恒之蓝勒索病毒迅速传播,基本上都是通过135,137,138,139,445等端口入侵,关闭445135137138139端口是有效预防入侵的方式之一,同时更新微软最新补丁,及时备份重要数据,才能从容应对病毒侵袭,下面重点介绍关闭135,137,138,139,445端口方法。关闭445135137138139端口方法教程方法一:方法二:1、打开Windows徽标(开始菜单)…

    2022年8月31日
  • springboot上传文件到文件夹

    springboot上传文件到文件夹springboot上传文件至项目当前路径下的文件夹关键代码,之后会分享完整代码到gitee默认上传文件到文件夹/***默认上传文件到文件夹**@paramfolder默认文件夹*@paramfile上传的文件*@return*/privateStringmyfileUp(Stri…

    2022年5月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号