好吧,我不知道如何把這個簡短。確定更大的數字並劃分
這是我的代碼:
var ratio, input={w:100,h:50};
if(input.w <= input.h) ratio = input.h/input.w;
else ratio = input.w/input.h;
問: 是否有更快,更好, 「更少的代碼需要」 的方法來計算ratio
?比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;
問: 是否有更快,更好, 「更少的代碼需要」 的方法來計算ratio
?比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中)並且會變慢。
在當前版本的Chrome中,可接受的解決方案不僅僅是性能不佳,而且也不太清晰。而反對最大分鐘的建議目前鉻28是最快的。 –
較小不一定快:
var ratio, input = {w:100, h:50};
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)
另一個[也許更高效]:
var ratio = Math.max(input.w/input.h, 1/input.w/input.h);
更效率比三元:
var ratio = w/h ;
ratio = ratio > 1 && ratio || 1/ratio
如何
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排序= [input.w,input.h]的.sort(),比=排序[1 ] /排序[0]'。 – pimvdb