2016-07-26 20 views
1

所以,我寫了這個for循環使用JavaScript降低過濾對象的數組,找到最低的計算統計

if (specimins.length > 0) { 
    var max = specimins[0] 
    for (var x = 1; x < specimins.length; x++) { 
     if ((max.weight+max.height) > (specimins[x].weight+specimins[x].height)) { 
      max = specimins[x] 
     } 
    } 
    specimins = [max] 
} 

然而,這是很礙眼。所以基本上,它是通過一系列的標本來找到最低總計算重量+身高。有沒有一種好的方法來使用array.reduce()?我嘗試了一些嘗試,但其中大部分都不適合我。

任何幫助是一種讚賞。謝謝!

+3

就我個人而言,我不認爲這是一個「眼睛」,但要記住句法糖並不總是一個更好的選擇,因爲它的代碼行較少。你可能爲了簡潔而犧牲可讀性 – Ju66ernaut

回答

2

寬度使用reduce如下你可以得到最低高度+元素:

var max = specimens.reduce(function(a, b) { 
    return (a.width + a.height) < (b.width + b.height) ? a : b 
}, specimens[0]) 

然而,沒有什麼錯誤使用標準在這種情況下循環。

+0

@Jacob感謝編輯,雖然我有點懷疑調用*最低*變量'max' :) – Damon

+0

是的,只是認爲變量應該和OP中的命名一樣。 – Jacob

+0

非常感謝,它的工作!最大值是從別的東西中遺留下來的,謝謝你指出這一點@Damon現在會改變它。乾杯! – Neal

相關問題