我有一系列元素如下:
var a = [
<tr data-order="0" data-time="840">…</tr>,
<tr data-order="0" data-time="60">…</tr>,
<tr data-order="1" data-time="10">…</tr>,
<tr data-order="2" data-time="20">…</tr>,
<tr data-order="3" data-time="15">…</tr>,
<tr data-order="4" data-time="40">…</tr>,
<tr data-order="5" data-time="30">…</tr>,
<tr data-order="6" data-time="1320">…</tr>
]
我想根据数据顺序以及数据时间对它们进行排序。我能够实现的目标是:
a.sort(function(m, n) {
return parseInt( $(m).attr("data-order") ) - parseInt( $(n).attr("data-order") )
});
这为我提供了按日期顺序排序的元素,但对于相同的日期顺序,我希望按日期时间排序。
如何按多个属性排序?
答案 0 :(得分:5)
如果差值为零(即值相同),则进行第二次比较。您可以使用logical OR (||
)来减少行数。为了获取data- *属性,使用data()
方法并且不需要解析它,因为我们正在采取差异。
a.sort(function(m, n) {
return $(m).data('order') - $(n).data('order') || $(m).data('time') - $(n).data('time');
});