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