Сделать числа в массиве относительно 0 - 100 - PullRequest
2 голосов
/ 16 июня 2019

У меня есть массив из шести чисел, которые очень близки друг к другу:

const numbers = [28.71, 28.53, 28.5, 28.38, 28.43, 28.44]

Я хочу изменить значения этих чисел так, чтобы они относились к 0 - 100.

Таким образом, самое высокое число равно 100, а самое низкое - 0 (или n), а числа между ними пропорциональны.

Я не могу переупорядочить эти номера.

Я могу нормализовать массив до 100, используя это:

const maxScore = max(numbers)

const ratio = Math.max(...numbers) / 100;

const newNumbers = numbers.map((v) => (v / ratio));

И это дает следующее:

[100, 99.37304075235109, 99.2685475444096, 98.85057471264366, 99.02473005921281, 99.05956112852664]

Однако числа на том же расстоянии друг от друга, что и раньше.

Как я могу изменить значения этих чисел, чтобы самое низкое было 0, а самое высокое 100?

1 Ответ

3 голосов
/ 16 июня 2019

Вы можете получить коэффициент и получить нормализованный массив.

function getNormalized(values, left, right) {
    var min = Math.min(...values),
        max = Math.max(...values),
        factor = (right - left) / (max - min) ;
    return values.map(v => (v - min) * factor + left);
}

console.log(getNormalized([28.71, 28.53, 28.5, 28.38, 28.43, 28.44], 0, 100));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...