2012-12-04 166 views
0

得到最高數我有一個類似的數據結構 - >如何從嵌套結構

var prices = [ 
    {currency: '$', value: 52}, 
    {currency: '$', value: 139}, 
    {currency: '$', value: 31}, 
    {currency: '$', value: 5} 
]; 

我想知道,從該數據的最高價。我知道我可以遍歷數組並收集數據,但是這樣做的最好方法是什麼?

+3

任何解決方案都會做一個循環,可能是內部的 - 但它必須完成(數據似乎沒有從樣本中排序,如果不是這樣 - 答案可能會不同)。 **你在找什麼?**(或換句話說:定義「最好的方式」)一個javascript短期解決方案?有效的解決方案?或理論上的答案應該如何完成? – amit

+0

我只是覺得我目前的解決方案太複雜了。也許他們不是...... –

回答

2

我們可以使用Array.prototype.mapMath.max一起做得很整齊。由於.map()返回數組,我們可以使用它來調用Math.maxFunction.prototype.apply。其結果會是什麼樣子

var max = Math.max.apply(null, prices.map(function(entry) { 
    return entry.value; 
})); 

console.log(max); // 139 

上述聲明等於

Math.max(51, 139, 31, 5); 

這將返回相同的結果,我們只是創造了它編程。

6

這樣的代碼:

Math.max.apply(Math, prices.map(function(p) {return p.value;})); 
1
prices.sort(function(a, b) { 
    return b.value - a.value; 
}); 

然後prices[0].value將是最高的。

+0

這將改變「價格」的順序。 – oleq