我正在尝试连续几个小时在我的任务中找到解决方案,但没有真正的改进,所以我会尝试向您寻求帮助。
假设,我们有一个带有值的数组。
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,但它没有帮助。
映射值时,您需要从item
和maxValue
中减去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)));