javasript Array sort的各种排序问题

1.数字排序:

alert(arr.sort(function(a,b){ //数字排序;相当与java的重写a-b是升序;理解为 a到b;
return a-b; //相当与java的重写a-b是升序;理解为 a到b;b-a降序;

}));

2.字符长度排序:

alert(arr.sort(function(a,b){ //字符长度排序;少到多:b.length-a.length;多到少;
return a.length-b.length;
}));

3.自定义对类元素排序;

<html>

<head>
<script>
/*思路:1.创建一个对象模版类Student;
2.自定义sort排序方法;
3.使用Array调用sort(my_compare);且调用自定义排序方法;注意细节:自定义方法中的形参,不影响操作;
4.输出;
*/
//1.创建一个对象模版类Student;
function Student(n,h,w,a){
this.name=n;
this.height=h;
this.weight=w;
this.age=a;
}

//2.自定义sort排序方法;
function compare(a,b){
if(a.height<b.height){
return -1;
}else if(a.height==b.height){
if(a.weight<b.weight){
return -1;
}else if(a.weight==b.weight){
if(a.age<b.age){
return -1;
}else if(a.age==b.age){
return 0;
}else {
return 1;
}
}else {
return 1;
}
}else{
return 1;
}
}

//声明3g个对象;
var s1=new Student("s1",181,49,20);
var s2=new Student("s2",180,50,19);
var s3=new Student("s3",182,48,21);


//使用Array调用sort(my_compare);且调用自定义排序方法;
var arr= [s1,s2,s3];
arr.sort(compare); //注意细节:这里调用函数是直接用函数名,不要compare()这样;

//输出sort后;
for(var i=0;i<arr.length;i++){
alert(arr[i].name+ ","+arr[i].height+ ","+arr[i].weight+ ","+arr[i].age);
}

/*
测试用例:
1."s1",180,50,20   "s2",180,50,19   "s3",180,50,21
结果:"s2",180,50,19   "s1",180,50,20   "s3",180,50,21
 
2."s1",180,49,20   "s2",180,50,19   "s3",180,48,21
结果:"s3",180,48,21   "s1",180,49,20 "s2",180,50,19

3."s1",181,49,20   "s2",180,50,19   "s3",182,48,21  
  结果:"s2",180,50,19 "s1",181,49,20   "s3",182,48,21
总结:排序height优先级最高,weight中, age最小;
*/
</script>
</head>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值