#javascript #sorting
#javascript #сортировка
Вопрос:
Я пытаюсь понять, как использовать несколько методов сортировки одновременно.
Например, скажем, у меня есть 3 способа сортировки чисел:
function weightedSort() {
var outputArea = document.getElementById("outputArea");
var distanceWeight = document.getElementById("distanceSlider").value;
var largestWeight = document.getElementById("largestSlider").value;
var smallestWeight = document.getElementById("smallestSlider").value;
var numbers = [1, 3, 4, 5, 7, 9, 13, 40, 500];
outputArea.value = numbers.sort(function(a, b) {
var distanceResult = Math.abs(4 - a) - Math.abs(4 - b);
var largestResult = b - a;
var smallestResult = a - b;
var distanceWeighted = distanceResult * distanceWeight;
var largestWeighted = largestResult * largestWeight;
var smallestWeighted = smallestResult * smallestWeight;
return distanceWeighted largestWeighted smallestWeighted;
}).join("n");
}
<div>
<label for="distanceSlider">Closest to 4</label>
<input id="distanceSlider" type="range" min="0" max="1"value="0" step="0.01" oninput="weightedSort();">
<label for="largestSlider">Largest</label>
<input id="largestSlider" type="range" min="0" max="1" value="0" step="0.01" oninput="weightedSort();">
<label for="smallestSlider">Smallest</label>
<input id="smallestSlider" type="range" min="0" max="1" value="0" step="0.01" oninput="weightedSort();">
</div>
<textarea id="outputArea" rows="9" cols="20">
1
3
4
5
7
9
13
40
500
</textarea>
Есть ли способ, которым я мог бы сортировать, используя часть каждого из этих методов?
Например, 100% «Ближайший к 4» и 100% «Наибольший» попытаются найти наибольшее число, ближайшее к 4.
В приведенном выше коде я добавил веса вместе, но это вызывает много проблем. Например, если наибольшее число равно 1 миллиону, а наименьшее — 1, «largestResult» будет настолько большим, что его нельзя будет преодолеть другими методами сортировки. Я также не уверен, что это дает правильный результат с математической точки зрения.
Любая помощь будет оценена!
Комментарии:
1. привет, интересно, возможно, указать функцию сортировки в developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…
2. Я сделал в своем примере. Я не уверен, как правильно использовать несколько методов одновременно.
3. Может быть, использовать логарифмическую шкалу для каждого метода вместо линейной шкалы?
4. @farhodius Нет, ему просто нужно вернуть число , где знак числа определяет относительный порядок сортировки.
5. @Zac Да, это хорошая идея. Самый большой и самый маленький действительно противоречат друг другу, но я включил оба варианта для примера. Я пытаюсь сам разобраться, каким должен быть результат, но я продолжаю путаться.