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" },
]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • unix grep命令_grep命令实例

    unix grep命令_grep命令实例grep一般格式为:grep[选项]基本正则表达式[文件]这里基本正则表达式可为字符串。单引号双引号在grep命令中输入字符串参数时,最好将其用双引号括起来。在调用模式匹配时,应使用单引号。 例如:“mystring”。这样做有两个原因

  • docker 镜像构建_如何更新docker镜像内的文件

    docker 镜像构建_如何更新docker镜像内的文件前言如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本Dockerfile编写

  • iphone android换机助手下载,安卓苹果换机助手[通俗易懂]

    iphone android换机助手下载,安卓苹果换机助手[通俗易懂]安卓苹果换机助手软件由腾讯团队专业打造的一款单品,它可以帮助你的手机自由换机,把各种信息文件都一次转换到新手机中去,安卓苹果换机助手无需联网,不耗费手机流量,传输速度快。功能介绍支持各主流品牌和厂商设备极速秒传。一键轻松换机,支持通讯录、软件、短信、文件、通话记录、书签、图片、音乐、视频、日程等多种数据传输。功能特色【数据全面】支持数据全面,基本覆盖常见的手机各种数据类型,包括图片、视频、联系人、…

  • 基于Python的OpenCV人脸检测

    基于Python的OpenCV人脸检测本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:1、检测图片中的人脸2、实时检测视频中出现的人脸3、用运设备的摄像头实时检测人脸提前做的准备:安装好Python3下载安装OpenCV库,方法是pipinstallopencv-python-ihttps://mirrors.aliyun.com/pypi/simple/–trusted-host=mirrors.aliyun.com/pypi/simple下载特征数据HAAR和LBP,这两种数

  • drf 教程_drm限制

    drf 教程_drm限制一、drf的安装1djangorestframework:django的app,只能再django上使用-djangorestframework是django的一个app,更快速在django框

  • 流水线设计思想_全自动流水线

    流水线设计思想_全自动流水线在硬件电路设计中,流水线设计思想是一种很重要的设计思想,这种思想是一种用面积换速度的思想,用更多的资源来实现高速。(面积就是需要的硬件数量,如触发器的数量)顾名思义,流水线思想,就像工厂中的流水线一样。假设是一个手机组装的流水线,一个三个步骤:A,将电池装入手机起来;B,将屏幕组装起来;C,将外壳组装起来。在上面的三个步骤中,流水线的实现就是:A步骤实现后,将手机发往B,然后A继续组装电池,而不会等待C完成再组装;B和C也是一样。流水线思想就是自己完成自己的功能,不会等待。这在硬件电路中就是一种并行的

发表回复

您的电子邮箱地址不会被公开。

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