【发布时间】:2017-09-19 08:27:54
【问题描述】:
以下代码用于对数组进行排序,如下所示:
function sorter(a, b) {
if((b.dataset.type === 'Recommended') && (a.dataset.type === 'Recommended'))
return (b.dataset.type === 'Recommended') - (a.dataset.type === 'Recommended') || a.dataset.amount - b.dataset.amount;
if((b.dataset.type === 'Featured') && (a.dataset.type === 'Featured'))
return (b.dataset.type === 'Featured') - (a.dataset.type === 'Featured') || a.dataset.amount - b.dataset.amount;
if((b.dataset.type === 'Special Offer') && (a.dataset.type === 'Special Offer'))
return (b.dataset.type === 'Special Offer') - (a.dataset.type === 'Special Offer') || a.dataset.amount - b.dataset.amount;
if((b.dataset.type === 'Christmas') && (a.dataset.type === 'Christmas'))
return (b.dataset.type === 'Christmas') - (a.dataset.type === 'Christmas') || a.dataset.amount - b.dataset.amount;
if((b.dataset.type === '') && (a.dataset.type === ''))
return (b.dataset.type === '') - (a.dataset.type === '') || a.dataset.amount - b.dataset.amount;
}
var sortedDivs = $(".terminalpopular").toArray().sort(sorter);
我已经根据 div 上标记的不同类型(即推荐、精选、圣诞节和无类型)对数组进行了排序,如下所示:
<div class="terminalpopular" data-amount="65.95" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="70" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="94.95" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="67.99" data-type="Featured">…</div>
<div class="terminalpopular" data-amount="75" data-type="Featured">…</div>
<div class="terminalpopular" data-amount="78" data-type="Christmas">…</div>
<div class="terminalpopular" data-amount="84.99" data-type="Christmas">…</div>
<div class="terminalpopular" data-amount="54.95" data-type>…</div>
<div class="terminalpopular" data-amount="84.99" data-type>…</div>
我想按以下方式对其进行排序(预期结果):
<div class="terminalpopular" data-amount="65.95" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="67.99" data-type="Featured">…</div>
<div class="terminalpopular" data-amount="78" data-type="Christmas">…</div>
<div class="terminalpopular" data-amount="70" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="75" data-type="Featured">…</div>
<div class="terminalpopular" data-amount="84.99" data-type="Christmas">…</div>
<div class="terminalpopular" data-amount="94.95" data-type="Recommended">…</div>
<div class="terminalpopular" data-amount="54.95" data-type>…</div>
<div class="terminalpopular" data-amount="84.99" data-type>…</div>
文字演示:
您能否建议我如何以这种方式根据类型对数组进行排序。即推荐的值为84、74、64,我们也有特征类型,其值为78、68、88。我们可以按以下形式对其进行排序:64(推荐)、68(推荐)、74(推荐), 78(精选)、84(推荐)、88(精选)等等等等?
【问题讨论】:
-
所以要根据数据量对列表进行排序?
-
如果你想要一个可以随便扔的库,listjs.com 很不错
-
实际上,我想按价格从低到高对每种类型的 div(即推荐、精选、特价、圣诞节和无类型)进行排序。推荐具有更高的优先级,其次是其他类型。即它应该在推荐中显示 LOW,然后是精选的 LOW 价格,然后是特别优惠的 LOW 价格(如果有),然后是圣诞节的 LOW 值,最后是无类型 div 的 LOW 到 HIGH。我希望,你明白了。
-
Recommended 优先级更高,其次是其他类型 如果是这样,
94.95是否应该排在第二位? -
它就像:个别类型的 LOW 到 HIGH。从第一组中取第一个低点,即推荐,你就完成了。现在,在特色中检查 LOW,你就完成了。现在,检查,特别优惠中的 LOW,你就完成了,检查,圣诞节的 LOW,你就完成了,等等。现在,再次检查 2nd Recommended LOW 值,依此类推...... . . . .
标签: javascript jquery html arrays sorting