我有多个大小为262144的数组,我试图使用以下代码将每个数组的所有值设置为0到1之间(包括0和1)。需要明确的是,每个数组都会有不同的规范化,因为每个数组都有不同的值。
var i;
var max = Number.MIN_VALUE;
var min = Number.MAX_VALUE;
for (i = 0; i < array.length; i++) {
if(array[i]>max) {
max = array[i];
}
}
for (i = 0; i < array.length; i++){
if(array[i]<min) {
min = array[i];
}
}
for (i = 0; i < array.length; i++) {
var norm = (array[i]-min)/(max-min);
array[i] = norm;
}
但是,我知道它没有正确执行此操作,因为当我执行以下代码时,记录到控制台的数字通常高于1.
max = Number.MIN_VALUE;
min = Number.MAX_VALUE;
for (i = 0; i < array.length; i++) {
if(array[i]>max) {
max = array[i];
}
}
for (i = 0; i < array.length; i++) {
if(array[i]<min) {
min = array[i];
}
}
console.log(max);
console.log(min);
我做错了什么?谢谢!
答案 0 :(得分:0)
您的代码适用于我。以下示例生成以下规范化数组:
[
0,
0.821917808219178,
0.0684931506849315,
0.3835616438356164,
1
]
请注意,min
和max
不必介于0
和1
之间,因为它们代表原始数组的最小值和最大值强>
var array = [4, 64, 9, 32, 77];
var i;
var max = Number.MIN_VALUE;
var min = Number.MAX_VALUE;
for (i = 0; i < array.length; i++)
{
if(array[i]>max)
{
max = array[i];
}
}
for (i = 0; i < array.length; i++)
{
if(array[i]<min)
{
min = array[i];
}
}
for (i = 0; i < array.length; i++)
{
var norm = (array[i]-min)/(max-min);
array[i] = norm;
}
max = Number.MIN_VALUE;
min = Number.MAX_VALUE;
for (i = 0; i < array.length; i++) {
if(array[i]>max) {
max = array[i];
}
}
for (i = 0; i < array.length; i++) {
if(array[i]<min) {
min = array[i];
}
}
console.log(array);
console.log(max); // 1
console.log(min); // 0
修改强>
正如您在示例中看到的那样,规范化后的min
和max
值应该是0
和1
,就是这种情况。
答案 1 :(得分:0)
由于this回答,我找到了解决方案!只是数字被比较,因为我没有将它们从字符串转换为浮点数。