gpt4 book ai didi

javascript - 如何使数组中的最低值 = x 和最高值 = y,同时使所有其他值相对

转载 作者:行者123 更新时间:2023-11-28 14:29:59 26 4
gpt4 key购买 nike

假设我们有一个类似于 [-0.6,-1.3,0.4,7.4,6.1,4.4,-0.1,0]; 的值数组-1.3 是最低值,7.4 是最高值。

如果我们想要转换数组中的所有数字,使最小值变为 0,最大值变为 140(同时所有其他数字都变得相对于最小和最大)。即:

[-0.6,-1.3,0.4,7.4]

会变成

[..., 0, ..., 140]

我们如何完成这样的事情?

干杯。

最佳答案

使用普通 JS。

首先找到最小值和最大值。

将从最小值中减去每个值,以便值从 0 开始,即 -1.3 - (-1.3) = 0要找到比例因子,请取缩放后的最大值 (140),并将其除以最大值与最小值之间的差值。 140/(7.4 - (-1.3)) = 16.091954...

然后,您可以使用 (x - minVal) * scale 映射每个值,以便将每个值映射到 0 到 140 之间的值。

let src = [-0.6, -1.3, 0.4, 7.4];

const minMaxReducer = (acc, currVal) => {
// check min value
if (acc.min == null || currVal < acc.min)
acc.min = currVal;

// check max value
if (acc.max == null || currVal > acc.max)
acc.max = currVal;

return acc;
}

// find the min and max values
var range = src.reduce(minMaxReducer, {
min: null,
max: null
});


let scale = 140 / (range.max - range.min);

// scale all values
let result = src.map(x => (x - range.min) * scale);

console.log(result);

关于javascript - 如何使数组中的最低值 = x 和最高值 = y,同时使所有其他值相对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51858505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com