JavaScript: сортировка на основе нескольких методов одновременно

#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 Да, это хорошая идея. Самый большой и самый маленький действительно противоречат друг другу, но я включил оба варианта для примера. Я пытаюсь сам разобраться, каким должен быть результат, но я продолжаю путаться.