好的,我不知道如何简短地表达这个问题。
这是我的代码:
var ratio, input={w:100,h:50};
if(input.w <= input.h) ratio = input.h / input.w;
else ratio = input.w / input.h;
问题: 有没有更快、更好、"需要较少代码"的方法来计算比率?而不是使用if/else语句。
谢谢!
好的,我不知道如何简短地表达这个问题。
这是我的代码:
var ratio, input={w:100,h:50};
if(input.w <= input.h) ratio = input.h / input.w;
else ratio = input.w / input.h;
问题: 有没有更快、更好、"需要较少代码"的方法来计算比率?而不是使用if/else语句。
谢谢!
你可以使用三元条件运算符。语法:
condition ? (statement if true) : (statement if false);
根据您的情况:
ratio = (input.w <= input.h) ? (input.h/input.w) : (input.w/input.h);
编辑:
这并不比你的解决方案更快,只是更容易编写而已。我建议不要使用:
var ratio = Math.Max(input.w, input.h) / Math.Min(input.w, input.h)
这将对数字进行两次比较(一次在Math.Max中,一次在Math.Min中),这会使速度变慢。
var ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)
另一种[可能更有效率的方法]:
var ratio = Math.max(input.w / input.h, 1 / input.w / input.h);
var ratio = w / h ;
ratio = ratio > 1 && ratio || 1/ratio
max
和 min
(小写)。 - James Allardice更小并不一定更快:
var ratio, input = {w:100, h:50};
ratio = input.w <= input.h ? input.h / input.w : input.w / input.h;
您好
ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)
var ratio = (input.w <= input.h ? (input.h / input.w) : (input.w / input.h));
var sorted = [input.w, input.h].sort(), ratio = sorted[1] / sorted[0]
。 - pimvdb