使数组中的数字相对于0-100

时间:2019-06-16 15:40:42

标签: javascript arrays math

我有一个非常接近的六个数字组成的数组:

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 个答案:

答案 0 :(得分:3)

您可以得到一个因子并获得归一化的数组。

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));