我有一系列元素,如下所示:
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") )
});
这给了我按日期顺序排序的元素,但是对于相同的日期顺序,我希望它按日期时间排序。
如何按多个属性排序?
最佳答案
在差异为零的情况下(即,值相同)进行第二次比较。您可以使用logical OR (||
)减少行数。要获取data- *属性,请使用data()
方法,并且由于我们有所不同,因此无需解析它。
a.sort(function(m, n) {
return $(m).data('order') - $(n).data('order') || $(m).data('time') - $(n).data('time');
});
请参阅:What does the construct x = x || y mean?