JavaScript 数组排序

JavaScript 数组排序JavaScript数组排序1、reverse方法2、sort方法1、reverse方法reverse方法会将数组内的元素反序排序。如:letarr=[1,2,3,4,5,6];arr.reverse();//arr=[6,5,4,3,2,1]2、sort方法sort方法默认会将元素当成字符串相互对比,也可以传入自己写的比较函数来决定排序顺序。如:letarr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

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


1、reverse 方法

reverse 方法会将数组内的元素反序排序。如:

let arr = [1,2,3,4,5,6];

arr.reverse();// arr = [6,5,4,3,2,1]

2、sort 方法

sort 方法默认会将元素当成字符串相互对比,也可以传入自己写的比较函数来决定排序顺序。如:

let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

arr.sort(); // arr = [1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,3,4,5,6,7,8,9]

arr.sort((a,b) => a - b);// arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

在 b 大于 a 的时候,这段代码就会返回负数(0也默认为负数),反之正数。

如果返回的是负数,则说明 a 比 b 小,这样 sort 就能根据返回值的情况对数组进行排序。

假设有这么个数组使用 sort 排序。

let arr = ["Ali","ali",'bob',"Bob"];

arr.sort();

其返回的是 [“Ali”, “Bob”, “ali”, “bob”]

为什么会这样呢?明明 a 在字母表里排在第一位,为何 ali 排在了 Bob 之后呢?

这里要解释一下的是,JavaScript 在做字符串比较的时候,是根据字符对应的 ASCII 码来比较的。例如,A、B、a、b 对应的 ASCII 码分别是 65,66,97,98.

因为 B 的 ASCII 码比 a 小,所以排在了 a 前面。

但相较上面的示例而言,只是明说了数组的对比,如果我们是想要比较对象里的值呢?如:

let arr = [
	{ 
    id : 10, name : "xx" },
	{ 
    id : 1, name : "xc" },
	{ 
    id : 50, name : "cc" },
]

arr.sort((a,b) => a.id - b.id);

在这个例子里,我们根据 id 的大小来排序数组顺序,最后得到的结果会是。

arr = [
	{ 
    id : 1, name : "xc" },
	{ 
    id : 10, name : "xx" },
	{ 
    id : 50, name : "cc" },
]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • css适配不同分辨率屏幕_html5判断分辨率

    css适配不同分辨率屏幕_html5判断分辨率最近出了很多新机,很多人在购买前会详细查看手机参数,其中“分辨率”这一项让不少人一头雾水,究竟手机分辨率是什么?对我们的使用体验有什么影响?是不是分辨率越高越好?教授估计这些问题百思特网让很多对手机了解不多的朋友产生困扰,所以今天就来为大家科普科普~一、什么是手机屏幕分辨率?图像的显示都是由许多像素点排列组成的,手机屏幕分辨率就代表着像素个数,当用手机屏幕中横向的像素点与竖向的像素点相乘的时候,再…

    2022年8月13日
    3
  • Delphi2007 下安装ActiveX控件[通俗易懂]

    Delphi2007 下安装ActiveX控件[通俗易懂]此英文文章来自codegear官方网站,但是是讲在BDS2006 下如何安装,我在delphi2007下用此方法,一样通过,原文如下 Description:HowtoimportanActiveXcontrolinBDS2006?Answer/Solution:Herestheprocedureforimportingandinstalling

    2022年5月14日
    36
  • jpa/springdata(1)jpa

    jpa/springdata(1)jpa

    2021年6月13日
    94
  • pycharm 2021.12.13最新版激活【最新永久激活】

    (pycharm 2021.12.13最新版激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2JTX0APX6F-eyJsa…

    2022年3月30日
    114
  • 自动化测试+性能面试题整理–个人最新【持续更新】「建议收藏」

    自动化测试+性能面试题整理–个人最新【持续更新】「建议收藏」写在前面公司要求招一名自动化测试,能力要求不高,1年左右自动化经验+部分性能经验即可,让我出一份题,我就百度+公司项目遇到的问题,出了一份,出题整体思路是:接口自动化问题+性能问题+规划的ui、app自动化+整体质量体系建设等多方面考虑。下面是正题自动化测试面试题1:基础篇目的:验证求职者是否在自动化测试岗位有实际应用于生产的工作经验1、使用什么测试框架做的上一个项目的自动化测试?说下怎么…

    2022年9月29日
    1
  • python画图小代码

    python画图小代码奥运五环importturtlet=turtle.Pen()t.speed(1)#画笔颜色为蓝色t.pencolor(“blue”)#画笔宽度为8t.pensize(8)#画半径为60的圆,篮圈t.circle(60)#第一个环t.penup()t.goto(100,0)t.pendown()设置环的颜色t.pencolor(“black”)t.circle(60)#第二个环t.penup()t.goto(200,0)t.pendown()t.pen

    2022年5月17日
    30

发表回复

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

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