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>