[当我显示image_width和image_height时,它显示image_width和image_height,但是当我显示image_weight2和image_height2时,它显示NaN而不是正确的结果。
我知道在计算GCD时已经有很多问题,但是在这里我的问题是为什么它显示NaN而不是数字结果。
calculateGCD = (width, height) => {
const image_width = width;
const image_height = height;
const gcd =
image_height == 0
? image_width
: this.calculateGCD(image_height, image_width % image_height);
const image_width2 = image_width / gcd;
const image_height2 = image_height / gcd;
const aspect_ratio = `${image_width2} : ${image_height2}`;
return aspect_ratio;
};
console.log(calculateGCD(1200,627));
正如我在这里看到的,该函数将NAN : NAN
作为字符串返回,这是由于您正在创建的递归而导致的,因此可以找到GCD来创建递归,但是如果您在函数外计算纵横比另外,当您获得GCD值时,由于递归堆栈,该函数执行了很多次,并且每次gcd的值都发生变化。否则,您可以通过此方法清除我,例如为什么要在calculateGCD
函数中计算宽高比。
或者如果我正确,那么您应该像这样尝试
const calculateGCD = (number1, number2) => {
let gcd =
number2 == 0
? number1
: calculateGCD(number2, number1 % number2);
return Promise.resolve(gcd);
};
getAspectRatio = (image_width , image_height) => {
calculateGCD(image_width , image_height).then((gcd) => {
const image_width2 = image_width / gcd;
const image_height2 = image_height / gcd;
const aspect_ratio = image_width2 +" : "+image_height2;
console.log(aspect_ratio);
}).catch((err) => {
console.log(err);
});
}
getAspectRation(1200,627);