JavaScript数组sort()方法详解与数字排序实现
本文详细介绍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
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
