现在的位置: 首页 > 综合 > 正文

javasript Array sort的各种排序问题

2018年05月20日 ⁄ 综合 ⁄ 共 1377字 ⁄ 字号 评论关闭

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>

抱歉!评论已关闭.