本文介绍JavaScript中数组重排序的两种内置方法:reverse()和sort()。reverse()直接反转数组顺序,而sort()默认按字符串比较,需通过自定义比较函数实现数值排序。文章详细解析了比较函数的返回值逻辑及简化写法,帮助开发者掌握数组排序的核心技巧。
JavaScript数组重排序方法概述
JavaScript数组内置了两个直接用于重排序的方法:reverse()和sort()。
这两个方法均会返回经过排序处理后的数组。其中,reverse()方法的作用是反转数组中各项的顺序。
var values=[1,2,3,4,5];
values.reverse();
alert(values); //5,4,3,2,1
sort()方法的默认行为与比较函数
在默认情况下,sort()方法按升序排列数组。该方法会调用每个数组项的toString()转型方法,将结果转换为字符串后再进行比较,从而确定排序顺序。即使数组中的每一项都是数值,sort()方法比较的也是字符串。
var values = [0,1,5,10,15];
values.sort();
alert(values); //0,1,10,15,5
因此,sort()方法可以接收一个比较函数作为参数,以控制排序逻辑。
function compare(value1,value2){
if (value1 < value2){
return -1;
}else if (value1 > value2){
return 1;
}else{
return 0;
}
}
此比较函数可适用于大多数数据类型,只需将其作为参数传递给sort()方法即可生效。
var values = [0,1,3,7,9,15];
values.sort(compare);
alert(values); //0,1,3,7,9,15
若需通过比较函数产生降序排序,只需交换函数的返回值即可实现。
function compare (value1, value2){
if (value1<value2){
return 1;
}else if {
return -1;
}else{
return 0;
}
}
sort()函数的排序条件判定逻辑如下:
当比较函数返回值大于0时,交换数组中相邻两个元素的位置;
当比较函数返回值小于0时,数组中相邻两个元素不交换位置;
当比较函数返回值等于0时,判定数组中相邻两个元素大小相等。因此,compare自定义函数必须返回一个数值。
数值类型的简化排序实现
对于数值类型,或者valueOf()方法会返回数值类型的对象类型,
可使用一个更简单的比较函数。此函数只要用第二个值减去第一个值即可实现排序。
function compare (value1,value2){
return value2 - value1;
}
以上所述是小编给大家介绍的JS中数组重排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!