js数组升序降序排序方法

2021-06-21 10:18:01

要排序,首先想到sort()方法,但是sort只能对字符串排序, API上解释sort是这样的: 数组sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。

下面看实例:

ar arr1 = [0, 1, 3, 10, 16, 5, 9, 0, 3];
var arr2 = ['bangbang', 'father', 'mother', 'brother', 'sister', true, false, 0, 1, 6, 13];
console.log(arr1.sort()) //很明显,这样不是我们要的结果,[ 0, 0, 1, 10, 16, 3, 3, 5, 9 ]
console.log(arr2.sort()); //[ 0,1,13,6,'bangbang','brother',false,'father','mother','sister',true]

很明显,用sort直接排序不是我们想要的结果,传入自定义回调函数之后

//升序排列
function ascend(a,b){
    return a-b;
}
//降序排列
function descend(a,b){
    return b-a;
}

console.log(arr1.sort(ascend));     //[ 0, 0, 1, 10, 16, 3, 3, 5, 9 ]
console.log(arr1.sort(descend));    //[ 16, 10, 9, 5, 3, 3, 1, 0, 0 ]

arr1.sort(function(a,b){
	//return a-b;
	return b-a; 降序
})

sort方法并不像我们想的那么容易使用,不是单纯的arr.sort()就行了,需要我们定义里面的回调函数!因为sort()方法默认情况下按照升序排列数组项,sort()方法会调用toString()转型方法,然后比较得到的字符串,即使我们比较的是数字,他也会把数字转为字符串以后再排序。

关于

联系方式 :

mail: hey_cool@163.com ,
QQ:583459700

备案许可证编号:蜀ICP备16005545号-1 © COPYRIGHT 2015-2024 zhmzjl.com | by: KAPO