一.排序(正序,逆序)两种思路:
A.正序,逆序分别直接通过算法实现。
B.排出正序后,逆序可以间接通过正序从末尾位输出实现

二.排序
* .公用变量申明:
flag:标识变换,这样点击按钮每次转换正序,逆序
object_arr是数组,里面的元素是对象。请输入图片描述
1.字符串排序:

var flag = 0;
function nameOrder(){
    var str="";
    var names= object_arr.sort();
    if(flag == 1){
        flag = 0;
        for(var i=0;i<names.length;i++){
            //数组元素name[i]是一个对象
            str += fileHtml(names[i],style);
        }
    }else{//逆序通过正序的从末尾输出实现
        flag = 1;
        for(var i=names.length;i>0;i--){
        //fileHtml(object,style)一条记录(元素)html
            str += fileHtml(names[i-1],style);
        }
    }
    $('#file-div').html("");
    $('#file-div').html(str);
}

2.数值排序:
views 是浏览量意思 int类型

 function viewsOrder(){
    var str="";
    var views;
     if (flag == 1) {
         flag = 0;
         views = object_arr.sort(
                 function (a, b) {
                     return (b.views - a.views);
                 }
         );
     } else {
         flag = 1;
         views = object_arr.sort(
                 function (a, b) {
                     return a.views - b.views;
                 }
         );
     }
    for(var i=0;i<views.length;i++){
        str += fileHtml(views[i],style);
    }
    $('#file-div').html("");
    $('#file-div').html(str);
}

3.日期排序

var str = '2013-08-30'; // 日期字符串
str = str.replace(/-/g,'/'); // 将-替换成/,因为getTime()只支持/分隔的日期字符串 
var date = new Date(str); // 构造一个日期型数据,值为传入的字符串
//此时得到的是日期型数据,如果要得到时间戳:  
var time = date.getTime();  

Eg:

function dateOrder(){
    var str="";
    var dates;
    if(flag == 1){
        flag=0;
        dates = object_arr.sort(
            function(a,b){
                return (new Date(a.createdAt.date.replace(/-/g,'/')).getTime()- new Date(b.createdAt.date.replace(/-/g,'/')).getTime());
            }
        );
    }else{
        flag=1;
        dates = object_arr.sort(
            function(a,b){
                return  (new Date(b.createdAt.date.replace(/-/g,'/')).getTime()- new Date(a.createdAt.date.replace(/-/g,'/')).getTime());
            }
        );
    }
    for(var i=0;i<dates.length;i++){
          str += fileHtml(dates[i],style);
    }
    $('#file-div').html("");
    $('#file-div').html(str);
}

总结:以上基本实现一个数组以对象为元素的,对对象某些属性的比较然后排正序和逆序。希望对有需要的人有帮助作用。


Amyding929
178 声望7 粉丝

好好学习。


引用和评论

0 条评论