我试图连续几个小时找到任务的解决方案,而没有真正的改进,因此,我将尝试向您寻求帮助。
比方说,我们有一个带有值的数组。
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,但这无济于事。
答案 0 :(得分:0)
请查看以下代码,该代码重点在于查找可添加到输出数组[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);
OR
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)));
答案 1 :(得分:0)
映射值时,您需要同时从minValue
和item
中减去maxValue
:
let values = [1000, 2000, 3000, 4000, 5000];
let maxValue = Math.max(...values);
let minValue = Math.min(...values);
values.map((item) => ((item - minValue) / (maxValue - minValue)));