2012-09-27 67 views
3

我的代碼可以找到兩個屬性的最大值,但我不知道這是執行此操作的最佳方法。我在jQuery的$.getJSON(URI, function(json){})調用裏面。獲取多個對象屬性的最大值

目標是製作一個條形圖,其中包含兩個條形圖,這些條形圖完全是最長條形圖的寬度。

目前發現的最大價值:

var max = Math.max.apply(this, $.map(json, function(d){ 
    return Math.max(d.bar1, d.bar2); 
})); 

有沒有更好的辦法?

編輯:JSON字符串,作爲請求:

[ 
    { 
     "bar1": "15", 
     "bar2": "13" 
    }, 
    { 
     "bar1": "20", 
     "bar2": "25" 
    }, 
    { 
     "bar1": "10", 
     "bar2": "18" 
    } 
] 

max應等於25與此作爲輸入。

+1

給出一個樣本json字符串 – Diode

+0

你的問題沒有任何與JSON。一旦它被解析,你正在使用JavaScript對象。 –

回答

3

這工作,並且是勉強較短,雖然不一定更高效:

var max = json.reduce(function(p, d) { // p is the current max 
    return Math.max(p, d.bar1, d.bar2); 
}, 0); 

http://jsfiddle.net/PF8Me/1/

需要注意的是,它假定所有的值都是正的(因此「初始值」零供應給reduce)。如果您不使用ES5瀏覽器,請使用墊片Array.reduce

+0

+1表示較短。墊片的萬歲! – Caleb

+1

@Caleb和不需要jQuery ;-) – Alnitak

+0

好奇,爲什麼人們不喜歡jQuery?我已經看到了所有堆棧溢出的情緒。 – Caleb