实际工作中,几乎不用自己写排序
最常用的是数组自带的sort方法实现排序
1、从大到小排序(数值比较)
//传的数组中的元素为id_num格式
function sortArr(arr):Array{
arr.sort(function(o1:*,o2*)):int{
var id1:int = parseInt(o1.spliut('_')[0]);
var num1:int = parseInt(o1.split('_')[1]);
var id2:int = parseInt(o1.spliut('_')[0]);
var num2:int = parseInt(o1.split('_')[1]);
if(num1 != num2){
// 先按数字大小排序
return num2 - num1;
//数字相等时,id大的排在前面
return id2 - id1;
})
return resultArr;
}
2.数字字符排序 sort方法不传函数
直接arr.sort()
返回第一个字符(注意:只比较第一个字符)进行排序后的数组
如 arr = [10,30,2];
arr.sort()返回值为[10,2,30]
而浏览器中的sort是基于浏览器自身的排序算法执行的,如果涉及到多个会影响排序的因素,如姓名首字母、年龄都参与排序,排序前已经按姓名首字母排好了。如果这时候只对年龄进行排序,在不同的浏览器或者同一个浏览器的不同版本运行时,可能会出现排序后的姓名首字母乱了。原因是sort的底层排序原理可能不一样,所以要同时将姓名首字母和年龄两个因素加入到同一个排序函数里进行排序
简单粗暴地讲,return 正数,两个比较对象交换位置,return 负数,两个比较对象不交换位置。
注意:SORT中的this指向window,而不是当前类,如果要调当前类的数据,则直接调当前类的实例化对象