天天看点

对象数组排序

知识点:

假设以对象数组形式来保存学生信息。每个学生包括3个属性:sid,sname,sage。请基于sid为该数组排序。

说明:

sort()方法:需要添加比较函数,反复从数组中获取一对值,在比较的基础上返回<0、=0和>0的值。

其实和排序字符串、数值没什么区别,比较对象是按照对象中的某个属性比较,所以,我们只要取出对象中的某个属性比较即可。

在数组中使用字符串进行排序

//数组格式
imageArr.push({href:h, name:fileName});  
//按照名字排序
var sortImageArr = imageArr.sort(function(a, b){  
        return a.name.localeCompare(b.name);  
        //return 1 or 0 or -1  
    });  
           

代码demo

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
    <title>jQuery数组和字符串--对象数组排序</title>
    <script type="text/javascript" src="../jquery-1.3.2.min.js"></script>

    <script type="text/javascript">

    <!--
    $(
        function()
        {
            var students =[
                {'sid':'ST001','sname':'张三','sage':},
                {'sid':'ST004','sname':'赵六','sage':},
                {'sid':'ST002','sname':'李四','sage':},
                {'sid':'ST003','sname':'王五','sage':}
            ];
            //表格显示
            $.each(students,
                function(index, value)
                {
                    $('#ia').append('<tr><td>' + value.sid + 
                        '</td><td>' + value.sname + 
                        '</td><td>' + value.sage + '</td></tr>');
                }
            );
            //按照SID排序
            var sidOrder = students.sort(
                function(a, b)
                {
                    if(a.sid < b.sid) return -;
                    if(a.sid > b.sid) return ;
                    return ;
                }
            );
            $.each(sidOrder,
                function(index, value)
                {
                    $('#ib').append('<tr><td>' + value.sid +
                        '</td><td>' + value.sname + 
                        '</td><td>' + value.sage + '</td></tr>')
                }
            );
            //按照SAGE排序
            var sageOrder = students.sort(
                function(a, b)
                {
                    return (a.sage - b.sage);
                }
            );
            $.each(sageOrder,
                function(index, value)
                {
                    $('#ic').append('<tr><td>' + value.sid +
                        '</td><td>' + value.sname + 
                        '</td><td>' + value.sage + '</td></tr>')
                }
            );
        }
    );
    //-->
    </script>
  </head>
  <body>
    <h5>未排序对象数组:</h5>
    <table id='ia' border="1"></table>

    <h5>按照SID排序对象数组:</h5>
    <table id='ib' border="1"></table>

    <h5>按照SAGE排序对象数组:</h5>
    <table id='ic' border="1"></table>

  </body>
</html>
           

继续阅读