转载自:http://zuo.ai.xiao.blog.163.com/blog/static/607915532011112932654121/
知识点:
假设以对象数组形式来保存学生信息。每个学生包括3个属性:sid,sname,sage。请基于sid为该数组排序。 |
说明:
sort()方法:需要添加比较函数,反复从数组中获取一对值,在比较的基础上返回<0、=0和>0的值。 其实和排序字符串、数值没什么区别,比较对象是按照对象中的某个属性比较,所以,我们只要取出对象中的某个属性比较即可。 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery数组和字符串--对象数组排序</title>
<script type="text/javascript" src="js/jquery/jquery-1.9.0.js"></script>
<script type="text/javascript">
<!--
$(
function()
{
var students =[
{'sid':'ST001','sname':'张三','sage':18},
{'sid':'ST004','sname':'赵六','sage':23},
{'sid':'ST002','sname':'李四','sage':42},
{'sid':'ST003','sname':'王五','sage':35},
{'sid':'ST001','sname':'张三','sage':18},
{'sid':'ST004','sname':'赵六','sage':23},
{'sid':'ST002','sname':'李四','sage':42},
{'sid':'ST003','sname':'王五','sage':35}
];
//表格显示
$.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 -1;
if(a.sid > b.sid) return 1;
return 0;
}
);
$.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>
效果
未排序对象数组:
ST001 | 张三 | 18 |
ST004 | 赵六 | 23 |
ST002 | 李四 | 42 |
ST003 | 王五 | 35 |
ST001 | 张三 | 18 |
ST004 | 赵六 | 23 |
ST002 | 李四 | 42 |
ST003 | 王五 | 35 |
按照SID排序对象数组:
ST001 | 张三 | 18 |
ST001 | 张三 | 18 |
ST002 | 李四 | 42 |
ST002 | 李四 | 42 |
ST003 | 王五 | 35 |
ST003 | 王五 | 35 |
ST004 | 赵六 | 23 |
ST004 | 赵六 | 23 |
按照SAGE排序对象数组:
ST001 | 张三 | 18 |
ST001 | 张三 | 18 |
ST004 | 赵六 | 23 |
ST004 | 赵六 | 23 |
ST003 | 王五 | 35 |
ST003 | 王五 | 35 |
ST002 | 李四 | 42 |
ST002 | 李四 | 42 |