随笔 - 175  文章 - 202  trackbacks - 0
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

第一个Blog,记录哈哈的生活

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Java links

搜索

  •  

最新评论

阅读排行榜

评论排行榜

首先,对一个 array 进行排序,但得到的结果与想象的不一样,是 2010-1-13, 2010-1-22, 2010-1-15
        var sortArray=[
         {title:"aaa", date:"2010-1-22"},
         {title:"trtttt", date:"2010-1-15"},
         {title:"erere", date:"2010-1-13"}
        ];
        sortArray.sort(function(x,y){
         var x1=new Date(x.date.replace("-","/"));
         var y1=new Date(y.date.replace("-","/"));
         //alert("x1=" + (x1.getMonth()+1)+"/"+x1.getDate() + ", y1 = " + (y1.getMonth()+1)+"/"+y1.getDate() + ", x1 > y1 = " + (x1 - y1));
         return x1>y1;
        });
        for(var i=0;i<sortArray.length;i++) {
         var x1=new Date(sortArray[i].date.replace("-","/"));
         alert(x1.getYear() + "-" + (x1.getMonth() + 1) + "-" + x1.getDate() + " , " + sortArray[i].date + " | " + sortArray[i].title);  
        }
要把标红的部分改成
        return x1-y1;
看来,js 排序的时候为了内部优化,排序和 sort 的 function 结果有关。
posted on 2010-03-22 14:01 哈哈的日子 阅读(611) 评论(1)  编辑  收藏

FeedBack:
# re: js Array.sort 遇到的问题 2012-03-29 22:57 gecko
解决方法:
var flag = x1 - y1;
if(flag > 0) {
return 1;
} else if(flag < 0) {
return -1;
} else {
return 0;
}
推测是与回调函数返回值关联起来  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: