2015-04-08 27 views
3

我正在尋找一種很好的方式來查找數組的最大ABSOLUTE值。在Javascript數組中找到絕對最大值

我的陣列是即

var array = [10,20,40,-30,-20,50,-60]; 

然後:

Math.max.apply(null,array); 

會導致 '50'。但是,實際上,我希望它返回'60'。

該選項是使用Math.abs創建第二個數組,但實際上我想知道是否可以組合應用函數,所以它是一個優雅的解決方案。

回答

15
Math.max.apply(null, array.map(Math.abs)); 

如果目標不支持Array.prototype.map(IE < = 8)瀏覽器,使用the polyfill或類似sugar.js庫。

+0

你5S更快:-) –

+0

那麼容易......謝謝。 –

3

試試這個:

var array = [10,20,40,-30,-20,50,-60]; 
var absMax = array.reduce(function(max, item){ 
    return Math.max(Math.abs(max),Math.abs(item)); 
}); 
+0

謝謝,上面的答案有點優雅,但是你給了我一些不錯的'aha'。還有很多要了解JS。 –

相關問題