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


相关推荐

  • MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换

    MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换一、概述在使用JavaJDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案。二、映射类型java.sql.Types定义了常用数据库(MySQL、Oracle、DB2等)所用到的数据类型,官名也叫JDBC类型。每个数据库产品的数据类型定义各不相同,但都有JDBC类型与之对应,如MySQL的BIGINT–>JDBC的BIGINT…

    2022年7月20日
    14
  • windows vim配置_配置vim

    windows vim配置_配置vimwin10设置vim配置文件进入vim安装目录(C:\Development\Vim\),后打开_vimrc文件在文件末添加需要设置的内容 setnu”设置行号 setnobackup”不保存备份文件 setnoundofile”不保存undo文件 setlines=35columns=140”设置窗口大小 (持续更新)…

    2022年9月28日
    0
  • Spring Boot Vue全栈开发实战_java web前端

    Spring Boot Vue全栈开发实战_java web前端构建SpringBoot项目并通过登录DEMO打通前后端的联系,为下一步开发打下基础。

    2022年10月12日
    0
  • 汇编语言全梳理(精简版)

    汇编语言全梳理(精简版)

    2020年11月20日
    250
  • MATLAB下载+安装教程[通俗易懂]

    MATLAB下载+安装教程[通俗易懂]MATLAB下载+安装教程说明:本文章提供的是MATLAB2018b的下载及安装方式。下载2个DVD镜像然后对其进行安装操作,本人亲测有效。下载提供的是百度网盘的下载,暂时没有找到其他途径的下载方式,后续若有其他下载方式在更新提供给各位网友。链接:https://pan.baidu.com/s/1Ph5KZdABQmM_sjyOVC7WMg提取码:rd9a下载资源一共有3个:DVD1+DVD2+MATLAB_R2018b_Win64_Crack安装安装全过程将电脑上的杀毒软件关闭,

    2022年6月2日
    47
  • 笔记29-MySQL多表&事务

    笔记29-MySQL多表&事务今日内容1.多表查询2.事务3.DCL多表查询:*查询语法: select 列名列表 from 表名列表 where….*准备sql #创建部门表 CREATETABLEdept( idINTPRIMARYKEYAUTO_INCREMENT, NAMEVARCHAR(20) ); INSERTINTOdept(NAME)VALUES(‘开发部’),(‘市场部’),(‘财务部’); #创建员工表 CREATETAB

    2022年7月27日
    3

发表回复

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

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