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);
结果如下:
在这里比较的字符串,第一位字符均相同,所以会将它们的第二位进行比较,直到 Unicode 位点不同
2.1.3.将9和80进行排序的代码如下:
let test = [9,80]
test.sort()
console.log(test);
结果如下:
这里首先会将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()方法时,设置排序规则和不设置排序规则的区别。而对数组的处理还有很多方法等待着我们去学习,我将会在后续的文章中为大家一一展示。如果觉得对你有用就点个赞吧!