JavaScript数组排序与反转:sort和reverse方法详解

作者:木棉时间:2026-10-27 18:05:26浏览:501

本文详细介绍JavaScript中Array对象的reverse和sort方法。reverse用于原地反转数组元素,不创建新对象;sort默认按ASCII字符顺序升序排列,可通过传入自定义比较函数实现数字的升序或降序排序。文章包含具体代码示例,解析参数含义及返回值规则。

数组反转方法 reverse

首先介绍数组的 reverse 方法。



reverse 方法用于将 Array 对象中的元素顺序进行反转。执行该操作时,不会创建新的 Array 对象,而是直接修改原数组。



具体示例如下:


代码如下:

 
var array1 = ['a','cc','bb','hello',false,0,3];
var array2 = [3,5,2,1,7,9,10,13];
array1.reverse();
array2.reverse();
alert(array1);
alert(array2);

若数组仅包含数字,reverse 后数字按原顺序反转(并非数值大小排序);若包含其他类型数据,则直接反转数组并返回。



数组排序方法 sort

接下来介绍 sort 方法。



sort 方法返回一个元素已排序的 Array 对象。


代码如下:

 
arrayobj.sort(sortfunction)

参数说明:



arrayObj



必选参数,指任意 Array 对象。



sortFunction



可选参数,指定用于确定元素顺序的函数名称。若省略此参数,元素将按 ASCII 字符顺序进行升序排列。



sort 方法会对 Array 对象进行适当排序,执行过程中不创建新的 Array 对象。



如果为 sortfunction 参数提供了函数,该函数必须返回以下值之一:



负值,表示第一个参数小于第二个参数。


零,表示两个参数相等。


正值,表示第一个参数大于第二个参数。



示例1:


代码如下:

 
var a, l; // 声明变量。
a = ["X" ,"y" ,"d", "Z", "v","m","r",false,0];
l = a.sort(); // 排序数组。
alert(l); // 返回排序的数组。

此例未传入比较函数,元素按 ASCII 字符顺序升序排列。由于数组包含多种数据类型,即使传入比较函数,仍可能按 ASCII 字符顺序进行升序排列。



例如:


代码如下:

 
var a, l; // 声明变量。
a = ["X" ,"y" ,"d", "Z", "v","m","r",false,0];
l = a.sort(); // 排序数组。
alert(l); // 返回排序的数组。
ll = a.sort(compack);
alert(ll);//返回与上面一样
function compack(a,b){
return a-b;
} 

当需要对数字进行排序时,可使用 sort 方法并传入比较函数,从而轻松实现升序或降序排列。



升序示例:


代码如下:

 
var a, l; // 声明变量。
a = [6,8,9,5.6,12,17,90];
l = a.sort(compack); // 排序数组。
alert(l); // 返回排序的数组。
function compack(a,b){
return a-b;
} 

降序示例:


代码如下:

 
var a, l; // 声明变量。
a = [6,8,9,5.6,12,17,90];
l = a.sort(compack); // 排序数组。
alert(l); // 返回排序的数组。
function compack(a,b){
return b-a;
} 

在比较函数中,升序排列返回 a-b,降序排列返回 b-a。

作者最新文章