将数字数组从一个范围转换到另一个范围是一个常见的编程任务,通常用于数据标准化或缩放。在这个问题中,我们需要将一个数字数组的最低值映射到100,最高值映射到0。
这种转换通常称为线性变换或线性映射。它涉及以下步骤:
假设旧范围是 [oldMin, oldMax]
,新范围是 [newMin, newMax]
,对于数组中的任意一个值 x
,其在新范围内的值 y
可以通过以下公式计算:
[ y = newMin + \frac{(x - oldMin) \times (newMax - newMin)}{(oldMax - oldMin)} ]
这种转换在数据可视化、机器学习模型输入标准化、图像处理等领域非常有用。
以下是一个用JavaScript实现的示例代码:
function mapRange(x, oldMin, oldMax, newMin, newMax) {
return newMin + ((x - oldMin) * (newMax - newMin)) / (oldMax - oldMin);
}
function transformArray(arr, oldMin, oldMax, newMin, newMax) {
return arr.map(x => mapRange(x, oldMin, oldMax, newMin, newMax));
}
// 示例数组
const numbers = [30, 50, 70, 90];
const oldMin = Math.min(...numbers);
const oldMax = Math.max(...numbers);
const newMin = 100;
const newMax = 0;
const transformedNumbers = transformArray(numbers, oldMin, oldMax, newMin, newMax);
console.log(transformedNumbers); // 输出: [100, 75, 50, 25]
Math.min(...numbers)
和 Math.max(...numbers)
获取。mapRange
函数对数组中的每个元素进行转换。[100, 75, 50, 25]
。通过这种方式,你可以将任何数字数组从一个范围转换到另一个范围,满足特定的需求。
领取专属 10元无门槛券
手把手带您无忧上云