天天看點

對象數組排序

知識點:

假設以對象數組形式來儲存學生資訊。每個學生包括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>
           

繼續閱讀