js数组对象重排序⽅法——sort()
由于在重新复习js的过程中,再⼀次接触到了js数组对象排序⽅法之⼀——sort(),先简单讲⼀下sort()⽅法的⽤法:
sort函数 js主要⽤于数组对象的排序,可以升序,也可以降序,但存在⼀个问题,如下代码:
var arr = [0, 3, 2, 16, 15, 10];
arr.sort();
console.log(arr); //[0, 10, 15, 16, 2, 3]
虽然该⽅法对数组进⾏了排序,但返回的数组却并不是按照数值⼤⼩进⾏的排序,因为sort()⽅法会调⽤每个数组元素的toString()转型⽅法将元素转化为字符串进⾏⽐较,⽽字符串⽐较的是ASCII码进⾏⽐较:
var a = '10';
var b = '15';
a.charCodeAt(); // Ascll 49
b.charCodeAt(); // Ascll 51
console.log(a < b); //true
所有这种情况并⾮最佳⽅案,这个时候就需要给sort()⽅法添加⼀个⽐较函数(compare),原理有点不太懂:
var arr = [0, 3, 2, 16, 15, 10];
function compare(a, b) {
//a位于b之前
if (a < b) {
return -1; //升序返回-1 降序返回1
} else if (a > b) {
return 1;
} else {
return 0;
}
}
arr.sort(compare); //升序
console.log(arr6); //[0, 2, 3, 10, 15, 16]
var arr = [0, 3, 2, 16, 15, 10];
function compare(a, b) {
return a - b; //a-b 升序 b-a 降序
}
arr.sort(compare); //升序
console.log(arr6); //[0, 2, 3, 10, 15, 16]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论