JavaScript数组sort()方法详解与数字排序实现

作者:纸飞机时间:2026-10-27 15:00:47浏览:408

本文详细介绍JavaScript中Array对象的sort()方法。默认情况下,该方法将元素转换为字符串并按Unicode编码升序排列。通过传入自定义比较函数,可实现数字类型的正确排序(升序或降序)。文章提供了多种实现比较函数的写法示例,包括匿名函数、具名函数及Function构造函数,帮助开发者掌握不同场景下的排序技巧。

sort()方法概述与参数说明

该方法返回一个经过排序处理的 Array 对象。



调用语法为:arrayobj.sort(sortfunction)


参数说明如下:


arrayObj


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


sortFunction


此为可选参数,用于指定确定元素顺序的函数名称。若省略此参数,


元素将默认按照 ASCII 字符顺序进行升序排列。


方法说明:


sort 方法会对 Array 对象执行适当的排序操作;


在排序执行过程中,不会创建新的 Array 对象。



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



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


零,表示两个参数相等。


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


默认字符串排序示例

示例1(默认按字母排序):



代码如下:

<script language="javascript">
var nameArr = new Array("douguoqiang","hedan","redhacker","panliu888","maxuan","xuejianping","lanse","zhangsan","lisi","wangwu");
nameArr.sort();
for (var i = 0; i < nameArr.length; i++) {
document.writeln(nameArr[i]);
  }  
</script>

运行结果:douguoqiang hedan lanse lisi maxuan panliu888 redhacker wangwu xuejianping zhangsan



示例2(数字排序,sort(prama)方法带参数):

数字排序与比较函数实现

代码如下:

<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return a-b;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
  }  
</script>

运行结果:


1


2


4


5


12


23


23


34



示例3(降序排序):

代码如下:

<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(function compare(a,b){return b-a;});
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
  }  
</script>

运行结果:


34


23


23


12


5


4


2


1



示例4(示例3的第二种写法):

代码如下:

<script>
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(new Function("a","b","return a-b;"));
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
  }  
</script>

运行结果:


1


2


4


5


12


23


23


34



示例5(示例3的第三种写法):

代码如下:

<script>
function compare(a,b) {
return a-b;
  }  
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(compare);
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
  }  
</script>

运行结果:


1


2


4


5


12


23


23


34



示例6(示例3的第四种写法):

代码如下:

<script>
var compare = function(a,b) {
return a-b;
  }  
var numArr = new Array(12,23,1,4,23,34,2,5);
numArr.sort(compare);
for (var i = 0; i<numArr.length; i++) {
document.write(numArr[i] +"<br>");
  }  
</script>

运行结果:


1


2


4


5


12


23


23


34


作者最新文章