У меня есть список продуктов, которые я хочу отсортировать. Сортировка по цене и продолжительности очень проста. Но я также хочу найти ЛУЧШИЙ продукт в целом.
Вот что у меня есть до сих пор:
var divList = $(".listing-item");
/* -------------------------------------- */
$("#btnPrice").click(function () {
divList.sort(function(a, b) {
return $(a).data("price")-$(b).data("price")
});
$("#list").append(divList);
});
/* -------------------------------------- */
$("#btnDuration").click(function () {
divList.sort(function(a, b) {
return $(a).data("duration")-$(b).data("duration")
});
$("#list").append(divList);
});
/* -------------------------------------- */
$("#btnBest").click(function () {
/* TBD */
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="list">
<div class="listing-item" data-price="20" data-duration="400" data-stops="3">Price 20, Duration 400, Stops 3</div>
<div class="listing-item" data-price="30" data-duration="350" data-stops="3">Price 30, Duration 350, Stops 3</div>
<div class="listing-item" data-price="10" data-duration="700" data-stops="2">Price 10, Duration 700, Stops 2</div>
<div class="listing-item" data-price="40" data-duration="500" data-stops="1">Price 40, Duration 500, Stops 1</div>
</div>
<button id="btnPrice" type="button">Sort by price</button>
<button id="btnDuration" type="button">Sort by duration</button>
<button id="btnBest" type="button">Sort by overall best</button>
ЛУЧШИЙ в целом продукт должен иметь дешевую цену, небольшую продолжительность и как можно меньше остановок.
Я думаю о своего рода «матричном расчете», сравнивая каждый фактор каждого продукта с тем же атрибутом всех других продуктов. В конце у нас будет сумма результатов всех факторов.
e.g.
Product 1 has price of 20 and duration of 400 and stops = 3.
Product 2 has price of 30 and duration of 350 and stops = 3.
Я бы рассчитал так:
А
20/30 = 0.66
400/350 = 1.14
3/3 = 1
SUM = 1.8
Б
30/20 = 1.5
350/400 = 0.875
3/3 = 1
SUM = 2.375
В этом расчете продукт A выигрывает, потому что сумма всех факторов меньше, чем сумма всех факторов для продукта B.
Пока для теории. Но как я могу добиться этого с помощью JS??