2015-08-27 29 views
0

我需要找到哪個變量具有最大值。檢測變量的最大值而不使用數組?

通常我會做這樣的事情:

var Dimensions = [Height, Length, Depth]; 

var biggestSide = Math.max.apply(Math, Dimensions); 

但我需要做的事情與在此之後的變量。

反正是有標識與最大值的變量var而不用使用數組或一系列if報表?

+0

_need在this_之後對變量做些什麼 - 爲什麼會阻止你使用Math.max路由? – mplungjan

+0

你想做什麼? 「識別」的含義是什麼?你能擴展你的問題嗎? – Amit

+0

@mplungjan - 簡而言之,增加高度,長度和寬度以及陣列本身的最大值。我需要確定具有最大值的數組,以便可以使用推送到該數組的變量進行操作。 – MeltingDog

回答

1

你可以使用一個switch聲明

var biggestSide = Math.max(Height, Length, Depth); 

switch (biggestSide) { 
    case Height: 
     ... 
     break; 
    case Length: 
     ... 
     break; 
    case Depth: 
     ... 
     break; 
} 

閱讀您的評論後:

@mplungjan - 簡而言之,瓦爾高度,長度和寬度從陣列本身的最高值。我需要確定具有最大值的數組,以便可以使用推送到該數組的變量進行操作。 - MeltingDog

我覺得這樣的事情是你所追求的

var maxHeight = Math.max.apply(Math, Height); 
var maxLength = Math.max.apply(Math, Length); 
var maxDepth = Math.max.apply(Math, Depth); 

var biggestSide = Math.max(maxHeight, maxLength, maxDepth); 

switch (biggestSide) { 
    case maxHeight: 
     // Do something with Height 
     break; 
    case maxLength: 
     // Do something with Length 
     break; 
    case maxDepth: 
     // Do something with Depth 
     break; 
} 

注意與ES6可以使用spread operator,而不是應用功能:

var maxHeight = Math.max(...Height); 
+0

VAR最大=(函數(){VAR maxValueInArray = x.sort()反()[0];返回最大;})() – simar

+0

Disadvange我的方法,目前尚不清楚放眼望去猜目標。更好地添加評論實際執行此功能的內容; – simar

+0

@simar - 另一個缺點,它會修改數組,所以如果陣列以後需要它不再在這是同樣的狀態。另一個 - 它顯着較慢和繁瑣。 – Amit

0

Math.max()接受盡可能多的值,如你所願。你不需要這樣的數組:

var biggestSide = Math.max(Height, Length, Depth); 
+0

我認爲他正在尋找最大的特定變量,而不是最大的值。 – JamesA

+0

@JamesA - 我想你是對的,我也注意到,接聽後,但隨後的問題就是混亂,需要擴大,以進一步解釋有望完成。在任何情況下,對於「...不使用數組...」這個明確提出的問題,我認爲這*是一個答案。 – Amit

相關問題