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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu开机进入tty1_ubuntu tty模式

    ubuntu开机进入tty1_ubuntu tty模式1、一个作为宿主机的Linux;本文使用的是RedhatEnterpriseLinux5.4;2、在宿主机上提供一块额外的硬盘作为新系统的存储盘,为了降低复杂度,这里添加使用一块IDE接口的新硬盘;3、Linux内核源码,busybox源码;本文使用的是目前最新版的linux-2.6.34.1和busybox-1.16.1。说明:本文是一个stepbystep的…

    2022年8月12日
    7
  • css 渐变背景_照片背景换成蓝色渐变

    css 渐变背景_照片背景换成蓝色渐变CSS渐变背景看这一篇就够了在我们自己设计网页的时候,为了好看美观,颜色可谓是最让人头疼的一部分。尤其是在配色上又找不到一些好看的网站。今天我就来记录一些好看的渐变式背景,和一些常用的颜色网站。CSS渐变使可以显示两种或多种指定颜色之间的平滑过渡。让我们来玩一玩,看能玩出什么花来。CSS定义了两种渐变类型:一、线性渐变(向下/向上/向左/向右/对角线)我们通过属性linear-gradient来这样定义一个线性渐变。background-image:linear-gradient(方向

    2025年8月22日
    3
  • 通过数字电视通过宽带网络取代互联网电视机顶盒应用

    通过数字电视通过宽带网络取代互联网电视机顶盒应用

    2022年1月10日
    71
  • 相关网站_如何制作一个网站

    相关网站_如何制作一个网站一、职称申报无锡市职称申报系统二、一建报名中国人事考试网三、无锡人事考试网无锡人事考试网四、社保卡江苏人力资源和社会保障网江苏社保卡服务网五、个人公积金查询公积金查询入口六、个人社保查询个人社保查询入口

    2022年8月23日
    6
  • RS232接口定义

    RS232接口定义RS232接口定义RS232接口定义  RS-232C接口定义(9芯)针脚定义符号1载波检测DCD2接收数据RXD3发送数据TXD4数据终端准备好DTR5信号地SG6数据准备好DSR7请求发送RTS8清除发送CTS9振铃提示RIPin1Receiv

    2022年7月15日
    17
  • DropDownList的常用属性和事件「建议收藏」

    DropDownList的常用属性和事件「建议收藏」SelectedItem属性设置或获取下拉菜单的选中项,该属性的类型为System.Web.UI.WebControls.ListItem.所有列表控件(ListControl)中的项都是该类型,它

    2022年7月3日
    56

发表回复

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

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