JavaScript数组方法学习(三):数组排序

JavaScript数组方法学习(三):数组排序


前言

数组在开发中扮演着十分重要的角色,所以学会对数组的各种操作也是非常的重要。
在本文中,我将介绍对数组排序的方法。


一、reverse()

1.介绍

定义:

reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。

语法: array.reverse()

2.案例

使用reverese()将数组倒序

代码如下:

let arr = [1,2,3,4,5]
arr.reverse()
console.log(arr);

结果如下:

在这里插入图片描述



二、sort()

1.介绍

定义:

sort() 方法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 Unicode 位点进行排序

语法: array.sort(function())

参数说明
function()可选。用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的 Unicode 位点进行排序

2.案例

2.1. 直接调用sort(),不设置排序函数

2.1.1.对字符串’Abc’和‘Bcd’进行排序的代码如下:

let test = ['Bcd','Abc']
test.sort()
console.log(test);

结果如下:

在这里插入图片描述
可以看到在没有设置排序函数时,对元素的比较是按照其 Unicode 位点从小到大进行排序



2.1.2.对字符串’Abc’和‘Acd’进行排序的代码如下:

let test = ['Acd','Abc']
test.sort()
console.log(test);

结果如下:

**![在这里插入图片描述](https://img-blog.csdnimg.cn/1e4499feaf95412bb2228b8802fa3cd9.png)**

在这里比较的字符串,第一位字符均相同,所以会将它们的第二位进行比较,直到 Unicode 位点不同



2.1.3.将9和80进行排序的代码如下:

let test = [9,80]
test.sort()
console.log(test);

结果如下:

![**![在这里插入图片描述](https://img-blog.csdnimg.cn/1e4499feaf95412bb2228b8802fa3cd9.png)**]

这里首先会将80和9转换成字符串,然后对它们的 Unicode 位点进行比较,由于80的Unicode点位小于9的Unicode点位,所以80在9的前面。



2.2. 调用sort(),且设置排序函数

2.2.1.对一组数字进行排序:

let test1 = [9,80,1,8,6,7,2]
test1.sort(function(a,b) {return a-b})
console.log('从小到大:',test1);

let test2 = [9,80,1,8,6,7,2]
test2.sort(function(a,b) {return b-a})
console.log('从大到小:',test2);

结果如下:

在这里插入图片描述

如果函数的返回值小于0,那么 a 会被排列到 b 之前;如果大于0,则b会在a之前



2.3. 排序稳定性

代码如下:

let arr = [
  {name: 'A', age: 16},
  {name: 'B', age: 16},
  {name: 'C', age: 11},
  {name: 'D', age: 18}
]
console.log(arr.sort(function(a,b) {return a.age-b.age}));

let arr1 = [
  {name: 'A', age: 16},
  {name: 'B', age: 16},
  {name: 'C', age: 11},
  {name: 'D', age: 18}
]
console.log(arr1.sort(function(a,b) {return b.age-a.age}));

结果如下:

在这里插入图片描述

自 ES10(EcmaScript 2019)起,规范要求 Array.prototype.sort 为稳定排序,即上例中的age相同时,以age作为排序规则时,其排序会按照原来的结构来。



总结

以上就是今天要讲的内容,本文介绍了对数组元素的排序方法,需要注意的是调用sort()方法时,设置排序规则和不设置排序规则的区别。而对数组的处理还有很多方法等待着我们去学习,我将会在后续的文章中为大家一一展示。如果觉得对你有用就点个赞吧!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值