值数组.将最小值设置为 0%,最大值设置为 100%,并查找所有项目的系数



我正在尝试连续几个小时在我的任务中找到解决方案,但没有真正的改进,所以我会尝试向您寻求帮助。

假设,我们有一个带有值的数组。

let values = [1000, 2000, 3000, 4000, 5000];
let maxValue = Math.max(...values);
let minValue = Math.min(...values);
values.map((item) => ((item) / maxValue));

如您所见,我们正在收到 [0.2, 0.4, 0.6, 0.8, 1],但我想要的是接收这样的数组 [0, 0.25, 0.5, 0.75, 1] 从中出来。

我的逻辑对这个挑战有点震惊,所以我希望你能帮助我。 我尝试将第一个值设置为 0,将最后一个值设置为 1,但仍然没有任何内容。 尝试过,玩 (item-minValue(/maxValue 也,我们收到的第一个值为 0,但它没有帮助。

映射值时,您需要从itemmaxValue中减去minValue

let values = [1000, 2000, 3000, 4000, 5000];
let maxValue = Math.max(...values);
let minValue = Math.min(...values);
values.map((item) => ((item - minValue) / (maxValue - minValue)));

请查看以下代码,该代码侧重于查找可以添加到输出数组 [0, 0.2, 0.4, 0.6, 0.8] 的值,使其成为 [0, 0.25, 0.5, 0.75, 1]。 此外,它将始终适用于排序数组。

let values = [1000, 2000, 3000, 4000, 5000];
let maxValue = Math.max(...values);
let minValue = Math.min(...values);
const fractionsArr = values.map((item) => ((item-minValue) / maxValue));
const coefficient = (1 -fractionsArr[fractionsArr.length-1]) / (fractionsArr.length - 1)
return fractionsArr.map((item, index) => item + index * coefficient);

let values = [1000, 2000, 3000, 4000, 5000];
let maxValue = Math.max(...values);
let minValue = Math.min(...values);
return values.map((item) => ((item-minValue) / (maxValue - minValue)));

相关内容

  • 没有找到相关文章

最新更新